Teaching Programming

My two oldest children are probably ready to start learning to program. Basil spends too much time on the computer playing games, but thankfully they’re more strategy games than anything else. Ginger doesn’t spend as much time, but might find it iteresting. I know they’re both capable of learning something. So, I’m going to use this weblog entry as a place to store different ideas I have have come across. Right now, I’m leaning toward a Lisp derivative. Lisp is clean and simple. “But you’re kids will hate it! There’s nothing practical they can do!” you say. Wrong! I’ve pretty much decided I want to use DrScheme to teach them. I was leaning towards Lisp (for its clarity, simplicity and cleanness) before reading his post on “Teaching my kids to program”, but after I reading that and his next post on the topic — “It’s down to Scheme or Logo” — I’m convinced to go with DrScheme. (FWIW, Don’s posts set off some really interesting discusson over on “Lambda the Ultimate.) There are other issues. I need something that runs on Linux and DrScheme does. It has a nice gui that includes the text to How to Design Programs, and Lisp runs on Lego Mindstorms which is also important since it will be good for kids to have a tangible result from their programming. Of course, some will say “Are you sure you want to teach your kids programming?” but I’m not really trying to give them employment options, I’m trying to exercise their analytical thinking skills, give them a good introduction to the use of logic, and maybe, just maybe, some fun. I’m not sure how age-appropriate all this is, but it looks like there are a lot resources available for this tact at Teach-Scheme.org. If nothing else, they’ll be good resources for me to use as I teachplay with them. Now, why not Java? BlueJ looks like a nice tool, but Java is Object-Oriented from the ground up. Like Don Box, I’m not comfortable with teaching OO to kids that young. For the same reason, I’m not going to go with Python or Ruby. How about Perl? I’m a great Perl programmer and I love the language, but I really do want to stick with something clean and simple. Finally, there are just a ton of resources available for teaching Lispish languages that don’t seem to be available for the other languages. I’m sure that this is partly the result of the reverence acadamia has for Lisp, but it also makes things a little easier. That, and Lego Mindstorms. What language would you teach your kids? Or, if you don’t have children, what language would you recomend?