Wednesday, February 28, 2007

Teaching My Son To Program

A few months back I read the article, "Why Johnny can't code" by David Brin.  He talks about the trials he had teaching his son to BASIC.  Just yesterday, I came across this article by Nat Torkington entitled, "Why Johnny Can't Program."  This one talks about his adventures teaching programming to youngsters.  He didn't use BASIC but rather Logo and Lego Mindstorms.  The comments there are a good source for other suggestions.  Some suggested languages aimed at kids like KPL or Squeak.  Others suggested that Ruby or Python were the way to go.  I think this latter group probably doesn't have young children.

My son is almost seven and insists that he's going to work at Microsoft when grows up.  Makes a father proud.  He enjoys math and for a while I've thought about how to introduce him to the concept of programming.  I thought about Basic, but after reading Nat's article, I thought better of it.  "Hello World" probably doesn't appeal to the average 7 year old.  Something with visuals might be more interesting to start with.  Many of the suggestions were too complex for a first language.

I decided to start small and settled on Logo as my introductory language of choice.  Logo also happens to be the first language I used back in 4th grade.  I recall finding it being taught without much context but I enjoyed it.  I thought I'd give it a shot.  After some looking around, I chose the free MSWLogo.

Tonight I introduced it to him.  He picked it up quickly and really enjoys it so far.  We'll see how long it holds his attention.  I suspect we'll have to move on from Logo before too long.  If things go well, I'll return to this topic in the future.

If you have suggestions on language or techniques that have worked for you, please send me mail or leave a comment.


  1. Greeting Steve!
    I have used the Scratch visual programming language designed by the nice folks at MIT to introduce my kid to programming.
    I find that the visual changes on the screen helps kids understand state changes and looping much better than the more abstract logo style systems.
    It also include native sound and sprite processing so they can get the "video game" effects that kids care so much about. Check it out, you won't be sorry!

  2. Thanks for the suggestion!  I'll check it out.  We're still having fun with Logo but a 6-year-old doesn't really understand angles very well and there's only so much you can do with the basic ones.  We'll be looking for something else soon.

  3. No problem!
    Hopefully you'll have time to post something about your experiences with this software. I really think that this is a great system for introducing kids to programming. I've had great luck in getting my kid to understand the basics and create some interesting programs.
    I'm also introducing him to the lambda calculus. At (barely) 8, he can perform some of the basic beta reductions and understands alpha renaming. (not in those terms of course, he calls it "replacing") I find that it really helps him understand how his math homework is really just manipulating symbols around. It also helped him understand why .9999... = 1. To ensure he "gets it," I have him both run the code on a console and write perform some reductions by hand.
    Regardless, I'm completely down with the idea of getting kids to learn to program at an early age. This should be part of the core curriculum in the US. If the US doesn't modernize their curriculum while other countries like India plan to teach programming at a much earlier age, I think that US kids will find themselves light years behind the rest over the next 10 years.

  4. I plan a post to share some of my experiences with Logo so far.  I think we're about at the limit of where it can take us without getting quite awkward.  Sure, you could write a complex program in Logo, but why would you?

  5. As I've stated before , I have a young son who I have been trying on and off to teach to program. I still