Learning Edge Momentum

Like many computer science or software engineering departments, at VUW we seem cursed with a “bimodal” distribution of marks in first year programming courses. While some students do very well and collect A or A+ grades, about as many do very poorly, taking away only Ds and Es — and with relatively few students in the
middle. This profile is very different from most other courses at the university — and generally from our second and third year courses — which have much more normal distributions.

A number of hypotheses have been proposed for the bimodal distribution — most commonly, that a large proportion of the population are congenitally unable to learn programming, and that our advertising fails to dissuade them from enrollment.

Recently, Anthony Robins, a colleague from Otago University in NZ (the southern-most university in the world, and oldest university in the NZ) has developed a novel rationale to explain these distributions. His paper, “Learning Edge Momentum” , hypothesizes that introductory programming is unlike many other disciplines, in particular, that “success in acquiring one concept makes learning other closely linked concepts easier (whereas failure makes it harder).”

What’s this to do with Grace? Well, one of our main aims in the design of Grace is to reduce the accidental difficulties of learning to program. In Robins’ terms, I think this could be described as “uncoupling the concepts” within the language — partly removing concepts, but mostly trying to make concepts less
closely linked.

Here’s a simple example. In Java 1.0:

To me, this needs a whole collection of tightly-linked concepts:

  • For loop
  • Integers, and “int” type
  • Variables and assignment
  • Length of a collection and that “col.length()” gets the length
  • Less than, and that “< " is less-than
  • ++ increment operator…
  • “col.at(i)” to get i’th member of a collection.
  • System.out.println to print things.

But the “new for loop” in Java 5.0 needs far fewer concepts:

In particular:

  • For loop
  • Variable declaration
  • System.out.println to print things.

Hopefully Grace’s “for” loop:

will be closer to the Java 5.0 loop rather than Java 1.0!

I look forwards to seeing how Robin’s hypothesis is developed and tested over time. I also look forwards to see how much we can ensure a clear and loosely coupled conceptual model under Grace.

Leave a Reply

Your email address will not be published. Required fields are marked *