I Need Advice On Teaching My 11 Year Old Nephew To Program
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:
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?








http://kids.dzone.com/news/getting-started-kid-fri...
Google for some darkBasic games out there, some really fun ones exist =)
http://scratch.mit.edu/
http://www.alice.org/
I haven't gotten deep into it yet, but it comes highly recommended as a way to get kids interested in programming.
The keys: Simple. Interactive. Visual.
Good way to introduce such things as loops, arrays, etc. Combine that with HTML/JS and he can create some websites, etc.
Also, the developer edition of Coldfusion is free.
I was gabbing with a science teacher recently and he had good things to say about teaching programming using Python. For a free editor try Komodo Edit from ActiveState.
http://www.activestate.com/Products/komodo_ide/kom...
http://www.greenteapress.com/thinkpython/
Adrian
My .02 cents
I'd also agree with you, actually, that JS isn't a great language to start with. As you point out, there's the big problem that to do anything "cool", your nephew is going to need to learn HTML/CSS. Also, you mention that the wealth of online tutorials on JS as an asset, but there's actually a downside: a huge proportion of the online JS stuff is either totally outdated (browser detection scripts anyone?), so badly written as to be useless, or just plain wrong.
On a slight tangent, I do think that in today's market, HTML/CSS alone is an invaluable skill, and I've wondered how old I need to let me kids get (the oldest is now 6) before I try to start introducing it to them.
But if the goal in the short term is just programming, start with basic concepts and then go into a language that can do stuff by itself. Unless you decided to start with HTML/CSS, in which case you can transition into JS after you go over the programming concepts.
Visual Basic 2008 in 24 hours
(They also have a 2005 version)
The IDE is free to use and this language is very beneficial.
When I was 11 I wanted to program too. I tried starting with C/C++ and got to the point of drawing some shapes on the screen and got totally frustrated making anything happen with MFC without a crash or hundreds of lines of compiler errors.
Then in my math class and I got this marvelous device, a TI-83+. You can program on it in TI-BASIC. It's a terribly simple language with no functions, simple constructs, simple storage types, and a brain dead simple API for drawing to the screen. The manual is very good, and it's available free online. There's also tons and tons of free code available, and even an IDE from them.
<http://www.ticalc.org/pub/83plus/basic/>
I think one of the great learning points of the language is just how simple it is, and the barriers you face that make you think. There's no functions, just GOTO or calling other programs and setting variables. There's lists of numbers, matrices of numbers, limited string storage, etc. It really challenges your brain, but also has the added advantage that you don't have miles of rope to hang yourself like with a desktop language.
Another big plus is that it comes in handy solving problems later in school, like double checking linear algebra or calculus problems or testing regression models. And since he's already great at math, using the neat formula features of the calculator to create programs should be easy.
The other thing I loved was that I could take it with me. Bored in the car? Program a snake game. Bored waiting at the doctors? Program turtle graphics.
Once you program a whole bunch of little programs on that sucker you start to want bigger and better things. Then moving on to a higher level language like AS3 or CF is very easy, and you gain an appreciation for constructs like functions, for loops, and structured code.
Best of all, the TI-84 is about $100 and can be connected with USB to any laptop to load programs or use the IDE if you don't want to use the development env. on the calculator itself.
Anyway, that's how I did it. :)
I agree with previous comments, you are 10-12 you want to get things done, have fun while doing them and get some kind of visual reward (everything is visual nowadays, media is everywhere).
Are kids 10-12 really concerned about OOP concepts? algorithms and such?
Get him something that can capture him first and then once he knows the computer can do cool things start on best practices and the formal way of doing things.
I went through this and I have a list of websites I found interesting on my del.icio.us account http://delicious.com/grtfercho/kids_prog?page=1 take a look at some of those websites if you have the time.
For my nephew what worked was Ceebot a game like programming language similar to LOGO. http://www.ceebot.com/ceebot/family-e.php
Good luck on your quest.
great free download from microsoft kids corner
http://msdn.microsoft.com/en-us/beginner/cc963401....