Tuesday, January 17, 2012

Too Much Programming Too Soon? by Mark Guzdial and Judy Robertson

OK, I'm a little behind in my reading. But this is just as important as the day I read it. I'm talking about the article of this name in the March 2010 CACM where the authors discuss Mark's book "How We Teach Introductory Computer Science is Wrong". (http://cacm.acm.org/blogs/blog-cacm/45725-how-we-teach-introductory-computer-science-is-wrong/fulltext) Both the article and the book are an indictment of the practice of doing minimal instruction in the teaching of programming. The research cited suggests that showing fully worked examples of programs significantly improves the speed and quality with which students learn how to program.

At the risk of reading too much into this fact I have always had the feeling that teaching programming has a storied history of a form of hazing. Perhaps because no one really knows how best to teach it or we all think that somehow we can teach it by lecturing and talking about the atomic syntax. But the reality is that students are always flumoxed at figuring out how to assemble the pieces. This "minimally guided instruction". You would think that the text books would do the job of providing the worked examples that this article suggests but I have been disappointed in most of the texts I've looked at. Ironically this is exactly the same suggestion that I have gotten from advanced students. So what could be going on the heads of these students that makes showing them worked examples help them learn? I have an idea.

Since the 1980s there has been way too much ink spilt over the discussion of patterns. While I think some of the discussion of pattern languages a bit over the top, there can be no doubt that there is something very important in patterns. Instead of teaching the core instructions of the language with their formal syntax, what we really need to do is teach them basic problems solved by computers and the patterns of language that solves that problem. I believe what this does it allow the student to learn by induction. By showing how to solve one problem we reasonably expect the student to learn how to solve a similar problem. If we show how to read a number from the keyboard, we certainly expect them to follow that pattern when they must read another number. For the gifted students, we expect them to figure out how other data types are read. This sounds very close to the thesis of one of my favorite books; Metaphors We Live By.

Metaphors We Live By was written by Lakoff and Johnson which has gone through many printings since it was published in 1980 and imho a book everyone should read. The central point is that metaphor is not merely a poetic device but a key insight into how we learn new things. This fits perfectly with Mark's suggestion that we should show a complete working program first and then ask the student to first make a small change and then quickly advance the distance between the example and the problem.

But then that's just me...

No comments:

Post a Comment