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:

view plain print about
1alert('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?

There are no comments for this entry.

Add Comment Subscribe to Comments

7/31/08 8:30 AM # Posted By Jim Priest

I did a post on the DZone kid section about this:

http://kids.dzone.com/news/getting-started-kid-fri...


7/31/08 9:34 AM # Posted By Brian Swartzfager

If either of my nieces told me they wanted to learn how to program, I'd probably start by asking them why (i.e. what did they want to be able to do) and adjust my approach based on their answer.


7/31/08 9:37 AM # Posted By Justice

As a kid I always wanted to write games (who wants to learn to write financial reports???) If that might peak his interest, check out DarkBasic. They can compile as .exe files so he can send to friends, uses directX, and its super simple to get something going (sprites, collisions, scrolling backgrounds, music, all super easy to do)

Google for some darkBasic games out there, some really fun ones exist =)


7/31/08 9:39 AM # Posted By Will

scratch is pretty good.
http://scratch.mit.edu/


7/31/08 10:04 AM # Posted By Ken Auenson, II

I plan on introducing my 12 yr old cousin to programming using Alice.
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.


7/31/08 10:09 AM # Posted By David Buhler

I taught some kids how to program back in 2004. I used Flash (AS2) to show them how they could create a small game where two objects moved around and bounced off one another. They loved it.

The keys: Simple. Interactive. Visual.


7/31/08 11:19 AM # Posted By Jason The Saj

Why not have him start off with a little webscripting with JavaScript, HTML, and Coldfusion. I think ColdFusion is a great beginner language because the syntax is a bit more verbose but very logic based.

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.


7/31/08 11:19 AM # Posted By Jason The Saj

Then move them to Flex and introduce them to the concepts of MVC, OOP, event-driven models, etc.


7/31/08 12:22 PM # Posted By Paul Marcotte

Hi Dan,

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...


7/31/08 12:53 PM # Posted By Jeff

I'd recommend having him learn Python. He can learn about OOP without the fluff of Java. There's even a free book, well PDF version for now, that is geared towards students.

http://www.greenteapress.com/thinkpython/


7/31/08 3:18 PM # Posted By Peter Boughton

Get him a ZX Spectrum!


7/31/08 6:01 PM # Posted By Adrian Aioanei

I'd say it doesn't really matter what language you're up to. First get him thru the basics of all languages: oop practices, data structures, algorithms all those, to get a solid ground in programming. Then choosing the right language comes naturally.

Adrian


7/31/08 10:19 PM # Posted By Qasim Rasheed

I would agree with Adrian and not get too bogged down on the language and/or IDE. Learning basic CS principles like data structures, algorithm etc should be the first step. This exercise will open up various fundamental concepts like Stacks/Queues, pointers, linked stacks, recursion, sorting (various sorting algorithm), binary search tress ...... You can always start with pseudo code for the implementation of any of these principals. Later pick any language Java, .Net ... and practice these algorithm on that language.

My .02 cents


7/31/08 10:53 PM # Posted By Rob Huddleston

I would, I guess, third Adrian's comments that if you want to get him started along the road to being a good programmer, you need to focus more on the core basics of programming than on any specific language.
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.


8/1/08 12:25 AM # Posted By Mike Brunt

What a marvelous topic and thought. I think the first thing we should do is forget what we think. If I were to consider (oh oh I'm thinking!) I'll start again. It's great to be excited by something whatever age we are, something that can really be used everywhere even places that we cannot think about. I would say Flex is the thing, what incredible creations could result from the brain of an 11 year old and Flex.


8/1/08 4:15 PM # Posted By Brandon Harper

I haven't thought about it for that long, but I think I would probably try to teach him Python or Logo. I think Logo is a really good language to start with because it gives you the ability to draw graphics pretty easily, thereby keeping a young mind interested. I have good memories of some the stuff I did in Logo as a kid.


8/6/08 10:11 PM # Posted By Donald

I would recommend he learns Visual Basic. I am twelve years old and am currently learning the language. I learn from a very helpful book, its called

Visual Basic 2008 in 24 hours
(They also have a 2005 version)

The IDE is free to use and this language is very beneficial.


8/14/08 6:12 AM # Posted By Elliott Sprehn

To be honest I think a lot of the focus here is just too grand. Trying to teach OO concepts and algorithms first at that point sounds like a bad idea. There's no bang for your buck. You just waste tons of time creating all these abstractions and distractions when all you wanted to do was draw on the screen and move things around. Like seriously, I doubt most kids want to spend time learning about Big-O, algorithmic complexity and binary trees? I certainly didn't.

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. :)


8/14/08 12:34 PM # Posted By Fernando Lopez

I went through the same questions when my nephew, then 10 years old wanted to take a stab at programming.

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.


10/9/08 5:54 PM # Posted By jere

vb for very smart kids

great free download from microsoft kids corner


http://msdn.microsoft.com/en-us/beginner/cc963401....


2/23/12 6:48 PM # Posted By AppLet

Ok, it's 5 years later, tell us what happened with the nephew?


2/24/12 7:27 AM # Posted By Dan Wilson

@AppLet,

Good question about my nephew. It has been 5 years since I posted this. He got interested in Roblox and making some scripts for that game, which I thought was pretty cool. I wasn't able to get him on a more formal programming track though. He got into football and girls and Playstations so he's focused on other areas...


We'll see what happens with him in the next few years.


Add Comment Subscribe to Comments