March 8, 2007

Scheme Education @ Portugal

Posted in Education, Programming, Scheme at 1:27 pm by pmatos

This post was triggered by the following comment to a recent post:

I’m a student at Faculdade de Engenharia da Universidade do Porto, and this first semester, year 1, we’ve studied the Scheme language. My personal opinion is that it is a bit useless and it lacks power. It cannot be compared with python,C,C++,Java.. It is nice for those learning the logic of programing, but, for real development, I think it is really a weak language!
But, anyway, this is just my opinion, try it out :D .

This is a comment from a 1st year, 1st semester student from a highly regarded university in Portugal, where has been common to teach the fundamentals of programming using the Scheme programming language. Having to teach it a couple of times I’ve had many students and I’ve known many teachers. It all comes down to what someone (I shall not name him, since I was not able to find his exact quote on my mail archives) told me once:

The problem with Scheme education is not about bad students. It’s about bad teachers.

I cannot agree more. Most of the student end with this tendency to say that Scheme is a practically useless, weak and nothing more than a pedagogical programming language. This is definitely sad! And this is the tendency that I tried to fight while teaching students because above all, we are not trying to teach students the Scheme Programming Language (or PLT-Scheme , which is what we use), we try to teach programming concepts and use scheme as a tool. We use about 1% of PLT-Scheme to teach these concepts (in fact, we don’t need PLT-Scheme at all… it’s all too powerful, an R5RS compliant interpreter would be enough). I have to stick with the curriculum, no matter what I think about it.

Even though some students might, or not, go through the subject successfully, the problem is that even those that go through it successfully easily lose any kind of interest in the Scheme Programming Language not only because they don’t know much of what the language is able to offer but also because their subject project doesn’t allow them to expand their knowledge about the language and even the teachers tell them Scheme is useless. And teachers tell them Scheme is useless because they incorrectly think it is useless.

In Portugal, as in many other countries, there are lectures (what in Portugal we call “Theoretical classes”) and labs (the so called “Practica/Laboratory classes”) and even though we have very good teachers in lectures, when students need to choose upon going to lectures or labs 95% will prefer to attend labs and miss the lectures. Missing the lectures means missing what good teachers can teach us and instead be in a lab with (many times) a moron dictating how to solve exam exercises and inventing bullshit regarding everything else. In the University of Southampton you have to attend short courses to be able to work as a demonstrator in a lab or even to teach small groups of people and then you’ll only be able to teach things you are used to work with!

Many Scheme teachers (in Portugal and more specifically @ Instituto Superior Tecnico) are people that just like their students left the subject of Programming Fundamentals teaching that Scheme sucks and that’s what they’re teaching their students. It’s impossible to teach something you don’t like, I know that, I had already to teach  something I didn’t like and something I was not really at ease with it. When this happens, things go wrong!

Scheme teaching should motivate students to understand not only the programming concepts but also the language itself  (in this case PLT-Scheme, since R5RS is just too restrictive to be considered a real language, instead it is just a framework to build a greater language). Even though schedules are tight, PLT-Scheme knowledge could come from its use in worksheets to be done at home introducing language aspects like modules, web programming, system programming, GUI programming, shell scripting, etc all possible within PLT-Scheme). Students love this! What students despise is having to find a way to implement a function generating an iterative process given a function which implements a recursive process. But this is important! But if they have to learn this, teachers might as well find a way to sweet student fingertips by making them play with stuff that’s appealing. Otherwise they see PHP for web programming, C for systems programming, C++ or Java or anything for object, GUI, etc… and still think that Scheme is useful for teaching how to implement a function computing the factorial and which generates an iterative process. What they don’t know is that Scheme is also useful to work with other problems… real problems…

In the end it all comes to down to who’s teaching students… if they think Scheme is useless… students will think Scheme is useless… and worst, will later teach their students of Scheme uselessness. I, on the other hand, had a the best teacher one could have at that subject.


1 Comment »

  1. Jorge Mendes said,

    Hi Paulo,

    I’m from Portugal, and despite the fact I’ve never had scheme classes, I found the Structure and Implementation of Computer Programs video Lectures and gained interest in the language.

    As a programmer I found the language very interesting since it made me think differently about computation processes: in terms of abstractions, instead of syntax and language rules.

    I would like to know your opinion about the real advantages of the language, and how it could be a secret weapon in a domain like the web programming(I’ve already read the essays of Paul Graham).

    At last, do you know any Scheme community in Portugal? I would like to take a dive in the language(I’m choosing between Scheme and Python for my extra-work projects), but I need elements to make the better choice.

    Thanks, Obrigado

    Jorge Mendes

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: