-----Original Message-----
From: Lindsay Marshall [mailto:[EMAIL PROTECTED]
Sent: Tue 6/26/2007 4:27 PM
To: Guzdial, Mark; Peter Gutmann; [EMAIL PROTECTED]; discuss@ppig.org; [EMAIL 
PROTECTED]; [EMAIL PROTECTED]
Subject: RE: PPIG discuss: Programmer education argument-starter of the week
 

> We know relatively little about what leads to success in programming.  

An interesting question then is how much we know about learning anything! Why 
do we think learning to program is different from learning anything else?
=====

AGREED! Great question!

Learning to program can't be different from any other kind of learning.  
Programming is too new to believe that we have evolved any particular new forms 
of learning that are particular to programming.  You can pick your favorite 
neural or cognitive model of learning -- it's got to be the same for 
programming as math, art, science, or engineering.

The reason for studying how people learn (and not learn) to program is because 
we can help them to do it better by understanding the domain and the task of 
learning that domain.  For example, Gerhard Fischer (with John Seely Brown) 
wrote an article many years ago now about how skiing instruction was 
dramatically improved by considering how to use scaffolding to make it easier 
to focus on one skill at a time. 

The domain-specific education field that has made the most progress is 
mathematics education (though reading education may be as advanced).  
Mathematics education researchers have studied how children come to learn the 
concept of number, and in so doing, have learned about previously invisible 
enabling skills which, if missing, inhibit a child from learning mathematics.  
My favorite of these is subitizing.  Subitizing is the ability to look at a set 
of items and know how many are there without counting.  Everybody can do it for 
one to three items.  More than that, we have to count--unless the items are in 
a well-known shape (like five or six on a die or a domino).  Math ed 
researchers have found that the lack of subitizing skill (especially for sets 
of five and ten) inhibits later math learning.  They have found ways of testing 
for subitizing skill and helping students develop that skill in preschool so 
that their math development isn't inhibited.

What are the computing/programming analogous skills to subitizing? Let's 
consider the students who aren't learning to program in all our experiences.  
If we're agreed that there is no "geek gene," then it's not nature -- it must 
be nurture.  The students who are learning to program have had some experience 
which has led to learning some skill/concept that the other students don't 
have.  What might that be?
- Maybe our students who learn to program more easily have more experience 
writing down or executing instructions?  Maybe they have a stronger 
understanding of some underlying concept of what it means to define a process 
for another agent?
- Maybe our students who learn to program more easily have had more experience 
thinking about repetitive tasks, how to describe them, or how to create 
shortcuts for them?  In which case, they may have a stronger recognition of the 
need for an iteration control structure and what would be needed to keep the 
iteration from going on forever?

So, the point isn't that learning to program is inherently different.  It's 
different in the same ways as learning any domain is different from learning 
other domains.  By understanding more deeply the challenges of learning to 
program, we can better help those students who do struggle and seem unable to 
learn to program.

Reply via email to