March 8, 2007
Scheme Education @ Portugal
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.