Tuesday, 16 August 2005

Chunking up and down

As I was eating museli this morning, it dawned on me that the failure of Objects First teaching is all to do with chunk size. Most students seem to think better in small chunk sizes during the learning process, then chunk up when they've gained competency. Objects require big-chunk thinking, because you need to be able to abstract over smaller chunks of information to think clearly about the structure of your programs. Beth Adelson did some fascinating work which showed that in programming, "experts" have much bigger chunk sizes than "learners". This bears out in the classroom too. The most common question I get asked by students who struggle with programming basically amounts to "what line of code do I write next". This tells me that they haven't chunked-up to thinking about algorithmic structure, so I know they won't cope well with object structures.

Objects-First expects students who cannot chunk large to do so, and it's no wonder they get so confused! My intuition on this is that OO-First will soon fade out pretty soon as a pedagogical fashion and Python will help enormously. In Python you can choose no program structure, functions, objects, whatever you want, so teachers aren't constrained to an OO-First approach. Unlike Java, an un-structured program needn't jump through hoops to print a word to the screen, so students have the benefit of being able to learn one chunk at a time.

1 comment:

  1. I agree, and would add that it's not just about the chunk size or level of abstraction.

    I think it's also about having a reason to be working at a particular level.

    Why teach functions before you know how to do anything useful in them? Why teach iteration without any commands to iterate over? And why teach objects when you haven't covered all of the above?

    These chunk sizes remind me of protein folding - primary, secondary and tertiary structures, with each being dependant on the one before.