Teaching Kids to Program (one game at a time)

I learnt to program many years ago when my school got a Commodore PET, an early all-in-one computer programmed in Basic.  I can remember how excited I was when that first program worked and I really wanted my kids to experience that.  

I've also taught a class of 9 year-olds in the local school Scratch, if you want to teach a class to program then you might find my experiences useful.
 
I try to keep the site fairly up-to-date with resources as I find them, this area changes all the time and languages and teaching environments come and go all the time.

How old can you start programming?

I think you could start really young if you have a 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.  For really young kids there look to be some fun apps that might be good way to start.
 
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 on Coding for Kids

                  

Also check out my longer kids programming reading list page

Minecraft

There's been a big increase in using Minecraft in education and with "mods" kids can change the way Minecraft works, you can do this in several ways.  
There's a web-based system called Learn To Mod which is pretty good web based subscription service -- a good book linked to the service is Minecraft Modding for Kids

Alternatively, if you've got a somewhat older kid (say 13+) then do it yourself with the Forge framework and Minecraft Modding with Forge: A Family-Friendly Guide to Building Fun Mods in Java.

Combined software and hardware options for kids

For many children pure programming can be a bit abstract, adding some hardware into the mix can be a good way to make it more "real".
 

Lego Mindstorms
The Lego Mindstorms kits are well regarded but are a bit pricey; 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.

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 second edition of 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 and lots of other inspiring projects, they also have a good book available.

Raspberry Pi

Raspberry Pi has been out for a few years now and is onto version 3, so now for under $50 you get a computer with WiFi!  You will need a few more bits (like a memory card, USB power supply) but it's a fully fledged computer, great for kids to experiment with hardware and software.  It connects to a regular TV via HDMI.

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

  

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.  Check out my dedicate page on Python resources for kids.

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. 

 
Alice Logo
 Alice 3D Programming environment that's very different from most other approaches, it feels like a 3D version of Scratch for older kids.
TouchDevelop logo TouchDevelopAnother environment from Microsoft, works directly in pretty much any web browser, 3 skill levels from beginner to expert.  Kids can code using drag-and-drop tools or a programming language and share their games with anyone via the web site.
  LogoProbably the first language targeted at kids specifically.  
It's fallen out of favor over the years but might be worth a look.  Turtle Academy has a web based version and there are apps too for some platforms.
 

Camps and Courses

CourseNameNotes 
 code.orgcode.orgAmazing work by some ex-Microsoft brothers, a non-profit organization dedicated to teaching kids to code.
A range of courses, over 20 hours worth, with options for almost any age.
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.

  CodecademyCodecademy is an web site dedicated to teaching programming.  They initially started with JavaScript and does it very well, it starts simply and builds and builds.
A bit dry for the younger kids. Now has courses for Python and Java too.
  iD Tech Camps.Holds summer camps for technology inclined kids, when choosing a camp I'd recommend choosing one that looks a bit too hard for your child as in my experience their descriptions over-sell what they will actually do. Also pretty pricey, I warn you.

Game Design for Kids

You may find, as I did with my youngest son, that your child doesn't really want to program, what they want to do is design games, I've gathered a few resources on that here.

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.