My 11 year old nephew Cole, is really good with computers. He is a smart kid in general, actually, being in the top 2% in the USA for mathematics. He’s even been to Space Camp. He is also a surfer, and you know how I like surfing!
He knows what I do for a living and I asked him if he was interested in learning some programming. When he said he was interested in learning, I began to think on how to get him up to speed.
Here are the criteria I’ve come up with:
- Dynamic, Loosely Typed (Dereferencing Pointers? Blech!)
- Low hardware requirements
- Free IDE
- High Impact (should be easy to make it do visible stuff)
- Lots of tutorials (self-learning is good)
Putting on my unbiased hat,I think the language that fits the bill is Javascript. Javascript is fairly forgiving and can be debugged with Firebug fairly easy. Environmentally speaking, pretty much any computer comes with an environment that runs Javascript. This gets us out of a lot of annoying environmental issues. I don’t live near Cole so this is in our best interest.
We can get him TextPad or Crimson Editor or another lightweight Javascript IDE that has syntax highlighting so that should take care of the IDE. For high impact, what could be easier to code and more visually impacting than:
alert('Hi Cole!');
Finally, there are billions of tutorials on Javascript on the web so Cole would have plenty of opportunities for self-learning. This means he can work at his own pace.
But Javascript isn’t perfect. To do any of the really cool stuff, you would need to know HTML and CSS, which is a bit of indirection. You would probably also need to know one of the Javascript frameworks too. Not to mention, browser/platform inconsistencies are frustrating enough to a professional programing for his/her livelihood, how much more for an 11 year old?!
Since I am not the first person to think of this problem, I’d like to hear what others are doing about teaching kids programming…thoughts?