Teaching programming concepts to kids

Michael Torrie torriem at chem.byu.edu
Sat Nov 11 10:00:27 MST 2006

Recent discussion on Java's merits got me thinking.  I recently read an
article, entitled "Why Johnny Can't Code[1]," which I thought was
interesting, but I'm not sure if his points really are valid.  But I
came across a little project on freshmeat the other day called BASIC-256
[2] that makes me really think.  BASIC-256 teaches BASIC in an
interactive way (but without line numbers and forced spaghetti).  Now
whether or not BASIC is a good language for this is irrelevant.  But the
thing that got me thinking was that this kind of simple, integrated,
immediate environment just isn't really done much anymore.  Sure I could
fire up Eclipse (or visual studio) and teach kids to program, but the
entire burden of project management (which is probably 50% of what real
programmers do in the real world) takes away from the simple joys of
learning how to program.  Many of us probably grew up with our first
exposure to programming being the BASIC interpreter on our original
Apple II or IBM PC (well those my age or older).  When I was in 6th
grade, Borland was in their hayday with this new fangled thing called an
IDE.  They were simple by todays standards, and even though they had a
compile step, they were almost as interactive as the old interpreters.
QuickBASIC did have completely interactive capabilities where you could
call functions you had just defined and do all kinds of testing (sounds
like python doesn't it).  The integrated debugger in the Borland IDEs
worked very well and I learned how to step my code and watch variables.
My first step away from spaghetti-land was with Borland's TurboBASIC
which brought all the advantages of Pascal to BASIC, and left out some
of the things i always hated about Pascal.  Later I taught myself C and
C++ with Turbo C++ 3.0 (great IDE).

Anyway, our modern IDEs are similar to what Borland started, but way to
complicated to get a young child started on, in my opinion.  I think
bringing back integrated, interpreted, immediate environments like
BASIC-256  is a good idea.  The Logo environment is also great.  Seems
to me our modern languages such as Java, C#, C++ don't lend themselves
well to a 5 year old (which is when I started programming).  Python just
might, though, except that a 5-8 year old may not always understand the
concept of white space.  And I do think it is important to first teach
procedural programming first.  OOP and event-driven are great, but as
the computer itself is procedural, if we want to teach budding computer
scientists how computers actually work inside, we need to start on
procedural programming (and polling), then probably event-driven (help
them understand interrupt-driven stuff), and then introduce them to
other artificial abstractions that they will eventually use exclusively.

Any thoughts?


[1] http://www.salon.com/tech/feature/2006/09/14/basic/index_np.html
[2] http://kidbasic.sourceforge.net/

More information about the PLUG mailing list