Lambda the Ultimate

inactiveTopic teaching programming; any research or results?
started 1/16/2004; 1:47:33 PM - last post 2/4/2004; 12:57:32 PM
Robert Holwerda - teaching programming; any research or results?  blueArrow
1/16/2004; 1:47:33 PM (reads: 258, responses: 8)
There are quite a few languages, tools and methods designed for teaching novices how to program. Most of these are backed by some sort of philosophy or vision about the best way to teach the important aspects, and what those important aspect are. But evidence of the effectiveness of a method is often anecdotal, consists mainly of testimonials or is limited to stories of the successes of the best students (but not of the performance of the less talented ones).

Does anyone know of any systematic research into teaching programming, perhaps comparing different methods, or truly measuring their effectiveness?

At my university (HAN University in the Netherlands) we teach programming to 300 novices each year, and frankly, we're not that happy with our results (using a pretty traditional course with Delphi.) We would like to base our strategy for improvement on something more solid than our personal hunches of what might work.

We are familiar with the published results of the TeachScheme project, but that's all we've found up to now. I would like to present my felow-teachers with a survey of research.

I would be very grateful to any pointers from the LtU community, and I will post the survey here if I can turn up anything substantial.

thanks

Ehud Lamm - Re: teaching programming; any research or results?  blueArrow
1/16/2004; 3:01:21 PM (reads: 251, responses: 0)
Our teaching and learning department may provide some useful links.

Ehud Lamm - Re: teaching programming; any research or results?  blueArrow
1/16/2004; 3:04:29 PM (reads: 251, responses: 0)
The PPIG may also be worth a look (though in general, I am quite skeptical of this sort of research).

Peter Van Roy - Re: teaching programming; any research or results?  blueArrow
1/18/2004; 1:33:19 PM (reads: 186, responses: 0)
In the last few years, my school (the engineering faculty at UCL) has completely overhauled the way it teaches the first two years. Before, we used a fairly traditional approach, lectures supplemented with labs and exercise sessions. Now we use a technique known as 'Problem-Based Learning (PBL)', in which there are many fewer lecture hours, and these are replaced by 'projects', one- or two-week long sessions of groups of up to eight students, in which they have to solve some concrete problem and find and study the material needed for solving it. There is a rather large literature on the effects of PBL on studying. At UCL, the IPM (pedagogy department) is doing a controlled study of our PBL overhaul, to see what we can conclude in a rigorous way.

See, e.g., the talk Construire une formation d'ingénieur: le rôle de l'apprentissage actif (in French) by Elie Milgrom.

Peter Van Roy - Re: teaching programming; any research or results?  blueArrow
1/18/2004; 1:45:29 PM (reads: 175, responses: 1)
Does anyone know of any systematic research into teaching programming, perhaps comparing different methods, or truly measuring their effectiveness?

It depends on what you mean by "teaching programming". For example, if you want to teach students concurrent programming in general, and you limit yourself to teaching them Java, then your approach is demonstratably wrong. This is because Java's concurrency is both inefficient and inexpressive. I mentioned to our department head that I wanted to teach concurrent programming in a second-year course, and he exploded that it was impossible (he is familiar only with the traditional approaches, using shared-state concurrency and concepts such as monitors). Nevertheless, we have now several years of experience of doing exactly that. Seif Haridi and Christian Schulte with Datalogi II at KTH (Stockholm) and Seif Haridi with CS2104 at NUS (Singapore). Christian Schulte won best teacher award at KTH for his course and Seif Haridi got extremely positive remarks both times he taught his.

Our approach starts with a simple functional language and then adds concurrency in a second step. This is rather nontraditional; the traditional approach would add mutable state in a second step (or do away with the functional language completely). For more information, check out the CS2104 course materials.

Dominic Fox - Re: teaching programming; any research or results?  blueArrow
1/18/2004; 2:06:58 PM (reads: 174, responses: 0)

Anecdotally (and hence somewhat off-topic here), I recently recommended Mozart/Oz + CTM to a young (undergraduate-age) colleague who wanted to learn more about programming. For the immediate purposes of our place of work, C# In A Nutshell would have been more appropriate; but he did say he wanted to learn about programming...

One thing I did enjoy was pointing out the Oz manual's tutorial on finite domain constraint programming to him, and watching him get to grips with that. I think that learning to program is a lot more fun if you don't get pent up in the Java box the whole time. The most interesting thing for me about Oz and CTM is that they not only cut across some of the habitual distinctions between, say, OOP and logic programming, but they also offer an approach in which the different "orientations" are deeply connected. Once that starts to sink in, and you begin to see the divisions between Java and Lisp and Prolog as contingent features of the (recent) history of programming rather than immutable truths of logic or facts of nature, then you have a much better basis for judging the true value of the technologies marketed by Microsoft and Sun.

Noel Welsh - Re: teaching programming; any research or results?  blueArrow
1/19/2004; 9:02:30 AM (reads: 143, responses: 0)
I'd love to see a survey of what's out there. I've just started tutoring a first-year Java class and I'm curious as to what different approaches could be taken. In addition to the above resources I've found the following two sites useful. I haven't yet found any emperical studies to support the various different approaches. The sites are:

http://www.bluej.org/

http://www.cs-ed.org/

Isaac Gouy - Re: teaching programming; any research or results?  blueArrow
1/20/2004; 11:07:11 AM (reads: 123, responses: 0)
just started tutoring a first-year Java class and ...

What's so bad about making it easier to learn Java?

The sample excerpts of Head First Java give you the general idea.

Isaac Gouy - Re: teaching programming; any research or results?  blueArrow
2/4/2004; 12:57:32 PM (reads: 79, responses: 0)
And TeachJava 2003! and DrJava