Free Computer Gifts for Kids
Brent Knowles has a blog post up, GIVING THE GIFT OF PROGRAMMING (OR: HOW DID YOU LEARN TO CODE?) in which he asks about how to get his nephew programming. I started to write a long response as a comment, but then decided it would be better as a blog post.
I was about ten years old when I learned to program. I used paper tape on a proprietary language called Focal, which was DECs equivalent to Basic. I ran this on a PDP-8. Later, I started programming on punch cards in Fortran and PL/I.
I have three daughters, and I've always told them they are free to play any computer game they could write. The older two, who are now 21 and 18 started in a couple different versions of Logo. I think Logo is a great language for kids ten and under to start on. For a free version, they used MSWLogo, which was a good start. At school, they used MicroWorlds from LCSI. It is a very nice implementation of Logo for schools. Later on, I introduced them to a little bit of Basic as well as to MOO programming.
MOOs, or Muds Object Oriented, were text based virtual worlds with a great object oriented design. I set up my own MOO which I encouraged them to create things in. What is great about MOOs is that they are like text based multiuser RPGs and the kids could program and then interact with the program and with friends in the Virtual Worlds.
If I were to go down a similar route today, I might consider having the kids start in OpenSim, which is an open source three dimensional virtual world, a little bit like World of Warcraft, but even more like Second Life, in that players can create their own objects and program them.
However, I've spent more time encouraging my youngest to learn variants of Smalltalk. In particular, I've loaded various versions of Squeak. These include Scratch, EToys and Croquet. I found EToys very similar to good old Logo and so I tend to encourage that. Croquet was an early attempt at a multi-user virtual world environment based on Squeak. It has now morphed into Open Cobalt, which I really haven't had time to experiment with.
So, depending on the age and interest, these days, I'd probably start with EToys and perhaps move to Open Cobalt. As an aside, I've managed to run Squeak on my N900 cellphone, which was a fun challenge.
Beyond that, I believe three dimensional modeling is becoming more and more important, so I'd recommend encouraging kids to play a little bit in Google SketchUp. There is a simple free version. For kids that really get into that, I'd encourage them to play with Blender.
I'd also encourage kids to explore GIMP, a free open source image manipulation program, similar to photoshop, and to explore audacity for audio editing.
If, on the other hand, the kid is more interested in web pages, I'd start off with a combination of PHP and CSS. You can do a lot of fun stuff in PHP and it can be fun for kids to see what you can do with it. CSS can help you make it look prettier. I've never warmed up all that much to javascript, but I'd consider that for subsequent topics, as well as MySQL. MySQL and PHP together can be very powerful and you can do a lot of neat things. MySQL also is a good way to start teaching data concepts.
So, that is my fairly quick but long set of suggestions.