Teaching programming concepts to kids

Levi Pearson levi at cold.org
Sun Nov 12 23:49:34 MST 2006

On Nov 12, 2006, at 10:56 PM, Ross Werner wrote:
> I tend to vote for the latter, since it's inevitable (IMO) that  
> programmers will understand less and less of what's "really going  
> on" under the hood. First people complained that new programmers  
> were jumping straight into programming in assembly and never really  
> understood what was going on at the hardware level. Then people  
> complained that new programmers just coded in C without  
> understanding what was going on at the assembly level. Then people  
> complained that new programmers were starting out with high-level  
> languages like Java or Perl without ever understanding what was  
> going on at the C level. Soon people will be complaining that  
> people start out using massive libraries and frameworks on top of a  
> high-level language and never understand what goes on even inside  
> the libraries.

I really agree with you here.  Although even 'back in the day' they  
had microcode below the assembly level, today the assembly-level code  
on a x86 chip is just a facade in front of a very complex system,  
which I only understand the rough outlines of.  Trying to start at  
the 'first principles' of hardware is going to be a pretty tough sell  
for a new programmer on modern hardware!  Better to start with  
something simple that the new programmer can intuitively reason  
about, even if it's fairly remote from what goes on 'under the  
hood'.  Having things set up to make 'cool' programs quickly would be  
a plus, too, so long as those things can eventually be deconstructed  
so that the inner workings become clear to an inquisitive programmer.

> Anyway, I've recommend this approach to at least a couple of people  
> who were interested in learning basic programming, so we'll see how  
> it goes!

One of the things that initially impressed me about Python was the  
emphasis on bringing programming to everyone.  I don't know that it  
will succeed in that goal, but it's important to have people working  
on it, because programming on some level will become increasingly  
important.  I think your PyGame approach is probably a good one, and  
hopefully your efforts to help people use it will bear fruit.

For younger kids, there's cool system built into Squeak called Etoys,  
which lets kids draw 'morphs' directly on the screen and program them  
through a tile-based language.  It's actually been used in some  
education programs, and has seen a lot of success in teaching kids to  
think about programming.

For people who haven't been exposed to any programming but have had  
some mathematical experience, the TeachScheme program is also likely  
to succeed.  It's been used in some high school programs to some  
encouraging success.  One interesting thing about the results so far  
is that girls seem to do much better with it than they did with  
languages like Java and C++.  Boys were often turned off by the fact  
that Scheme isn't used much in the 'real world', but lots of them  
ended up loving it eventually anyway.  There's a complete textbook  
available and a simple IDE (DrScheme) with some powerful learning  
features that tie in with it.

If anyone is interested in any of these things, I can dig up some  
links tomorrow.


More information about the PLUG mailing list