Teaching Kids to Program (one game at a time)

Originally this site was about my experiences teaching a class of children to program, I've moved those notes to another page Teaching a class to program.
 
I learnt to program many years ago when my school got a Commodore PET, an early all-in-one computer programmed in (Microsoft) Basic.  I can remember how excited I was when that first program worked and I really wanted my kids to experience that.
So far I haven't managed to persuade any of them to take it very far, but they have crafted a few games using Scratch -- the children's programming environment from MIT.  I've also taught a class of 9 year olds in the local school Scratch and that went reasonably well.
 
I'm going to put more general resources on this page as I gather them, I've found that this area changes all the time and most environments get hyped at the start but then gradually wither away.

How old can you start programming?

I think you could start really young if you have a talented, motivated child and you have the time and expertise to work with them;  perhaps 7 years.  I see lots of comments on programming sites of parents teaching younger kids but personally, I'd wait, they're going to spend years sitting in front of screens, do you really want to encourage it earlier?
 
My 9 year old could do fun things with Scratch and of course teens and older children are going to find this easier than the younger ones. 
 
Early teens and complete beginners would probably still enjoy using Scratch / Small Basic to get a feel for it but a keen older child would probably be best to rapidly move on to Python (see below); also for the more practical child do try combined hardware/software kits like Lego Mindstorms.

Books

               

Also check out my longer kids programming reading list page

Combined software and hardware options for kids

I think its a great idea for older kids to combine hardware and software and there are now so many cool options.
 

Lego Mindstorms

The Lego Mindstorms kits are really well regarded but are a bit pricey. They are the only one completely targeted at kids (and the kid in all of us, come on be honest).

With the kit you can make innumerable cool robots and devices, for instance a robot that guards your room and shoots balls at intruders!

According to the Lego site:

The Mindstorms robotics toolkit comes with building instructions for 4 main models ranging in building complexity, going from the Quick Start model
that you can assemble and program in 30 minutes, to the ultimate Humanoid.
6 building and programming challenges are included on the software CD, complete with step-by-step building instructions and programming guide for all models.

Hot news: New LEGO Mindstorms EV3 are available! and they look pretty cool.

Arduino Kits

Definitely one for older kids only, I'd think 14+ unless they are really committed.

There are lots of these kits available, a bare-bones kit can be $25 but unless you've got a lot of electronics lying around you'll need some sensors to be able to actually do anything fun.

I'd suggest getting a kit with all the getting started stuff like the one shown to the left.

There's also the awesomely named book 30 Arduino Projects for the Evil Genius. MAKE magazine is also well worth subscribing to as they do a lot with Arduino kits they also have a good book available.

Raspberry Pi

The new kid on the block, not as many hardware add-ons (yet) but a fully fledged computer costing under $50, great for embedded projects, like a media player.

Includes networking and an HDMI out for connecting to a regular TV.

The excellent MAKE magazine also has a book for getting started with the Raspberry Pi.

I'm working on a project with my kids to build an old-fashioned arcade game cabinet with a Raspberry Pi and an old monitor.

  

Software Programming Environments Suitable for Children

I've started pulling out a better list of kids programming environments.
 Environment Name Notes 
Scratch
Scratch

Free, cross platform (also Web browser version).

Good starting environment especially for younger children, I would estimate most kids 8-9 years old could start and probably smart 7 year olds.

Programming is all drag-n-drop but has a reasonable set of control structures (loops, ifs) and a good event based model.

There's a new release which runs entirely in a web browser which is great.

SmallBasic
SmallBasic

Free, Windows only.

Created in 2008, a simple Basic environment for .NET, I tried it very briefly when it first came out and was a little disappointed, however its been improved since then and they've put a lot of work into it.

One great feature is that once the kids have outgrown SmallBasic they can take their project and upgrade it and then take it further with the full VisualBasic.NET environment (the Express edition is free too).

Microsoft also has some great beginning programming videos and tutorials, overall highly recommended.

GameMaker Not strictly targeted at kids but I think it would make a good next step after Scratch.  Again no hand-writing of scripts its all drag-n-drop and dialogs but much more fully featured than Scratch (and hence more complicated).
PyGame
 

PyGame and Python

For somewhat older kids I think you could get useful stuff done with a generic programming language (like Python).

Add in a library like PyGame and you've got a pretty good basis.

Kudo

Kudo

Free: Windows and XBox

Microsoft Research visual coding environment, my 9 year old enjoyed using this.  Emphasizes the fun aspect.

Also check out the excellent Microsoft Kid's Corner in their beginners development center. 

Khan Academy
Khan Academy 

Free: Cross platform (browser based).

Khan Academy has an introduction to programming using JavaScript; not a great sense of fun though.

   HTML Although not programming kids can get very enthused about building web sites, if you start them building basic static web sites they can advance on to JavaScript programming and get into programming that way.

Khan Academy (above) has a reasonable JavaScript tutorial suitable for children as does Cadecaemy (below)
   Codecademy Codecademy is an web site dedicated to teaching programming in JavaScript and does it very well, it starts simply and builds and builds.
A bit dry for the younger kids.
 

Camps and Courses

I've had a couple of people contact me about camps offering programming courses, they look pretty cool, let me know if you've been to any.

From their web site this one looks good:  iD Tech Camps.

Comments? Contact?

You can contact me at M A R K at Teach Kids To Program dot com (no spaces, all lower case). 
As a side project I'm also working on a site about holding great parties.