When and What to program? - Introducing children to computer programming
June 29, 2010 9:05 AM   Subscribe

When do you find is a good age to introduce children to computer programming? I have a nine year old and I am wondering if this is too early an age to introduce him to computer programming.

First some background. My son is homeschooled and seems to show a proclivity for math. He enjoys problem solving and word problems specifically. He also enjoys building things with legos. He does play some video games but we tend to limit his exposure, both on what games he plays and how much he plays it. Games he likes are Portal, Civilization, and SimCity.

What age is a good age for kids to be introduced to programming? Assuming nine years old is not too young what languages would people recommend? Are there any specific "toolkits" or products that are well suited to this? We use Microsoft Windows on the children's system so I am specifically looking for something that will run in that environment.

Thank you in advance!
posted by mountainfrog to Computers & Internet (22 answers total) 16 users marked this as a favorite
I think Lego Mindstorms would be the perfect place to start off, especially if he's already fond of Lego.
posted by griphus at 9:09 AM on June 29, 2010

Scratch is a programming system intended for kids

If he's more advanced, he might like Processing, which is basically Java ina shiny wrapper that hides some of the complexity
posted by miyabo at 9:14 AM on June 29, 2010

I don't think introducing a nine-year-old is too young to introduce a kid to programming. I second Lego Mindstorms, and I also strongly recommend MIT's Scratch. It's absolutely perfect for introducing young (or just plain nervous) folks to programming. I've seen third and fourth graders make some pretty cool stuff with it.
posted by GnomeChompsky at 9:15 AM on June 29, 2010

I'd been introduced to BASIC a couple years before this, so that would've been in the very early 90's. I'm not a programmer or anything now, so stuff like Scratch sounds like a great idea. For me, even.
posted by cmoj at 9:19 AM on June 29, 2010

Nine is plenty old enough. I hear good things about Scratch, though I haven't tested it on a kid yet.

This is also a good time to introduce working with electronics, incidentally.
posted by SMPA at 9:19 AM on June 29, 2010

You might be interested in the c-jump board game.
posted by artlung at 9:21 AM on June 29, 2010

Lego Mindstorms should be a no-brainer considering he already enjoys legos.

I would also suggest something like Game Maker? Microsoft's Visual Basic would also be a good starting point as the GUI is friendly enough for a kid but you can still do more or less anything a more "standard" language like Java or C can do.
posted by Funky Claude at 9:35 AM on June 29, 2010

I started when I was 7 with HyperCard and LOGO. I was also homeschooled found them on my own instead of at someone's prompting, which I feel really helped me to enjoy and appreciate programming on its own merits rather than because my parents wanted me to. I also played a lot of Widget Workshop.

HyperCard, LOGO, and WW all being basically dead, I think Scratch seems like a good starting point for kids today. If you have a Mac, you might also check out Quartz Composer, which is like a matured, usable and less game-y Widget Workshop. I would've liked playing around with it at that age.

Or you can provide some web development tools. Teach your son the basics of HTML and CSS first (or if he's like me, he'll seek out resources to teach himself). Then graduate him to JavaScript or a server-side scripting language to begin "really" programming. I cut my web-dev teeth on PHP, which has terrific documentation and a thorough function reference online. I followed some old but still relevant and online WebMonkey tutorials like this intro to PHP. I liked that site in particular for its casual, funny way of explaining basic concepts.

Good luck!
posted by The Winsome Parker Lewis at 9:51 AM on June 29, 2010

So I would second the suggestions of Mindstorms and Scratch and add the book "Hello World!" which is aimed at teaching kids programming using Python which is a very easy language to get into but is quite robust.

9 is certainly not too young but there can be some math and abstract concepts which not all kids have the patience for or interest in at that age. I wouldn't push the issue too much but buying a book and installing python and see how much interest your son has from there.
posted by GuyZero at 10:06 AM on June 29, 2010

This previous AskMe has good comments on teaching programming to kids.
posted by needled at 10:24 AM on June 29, 2010

If he's interested, go for it; there's no 'right' or 'wrong' age, really.

The Lego Mindstorms stuff is neat (years ago I had the opportunity to play with it when it was still being prototyped ... I was impressed with it then and I've heard it's improved substantially with each iteration since) but expensive. You do not need to spend any money to play around with programming; the only reason to buy anything is if you think your kid would be more interested if the programming was related to robotics, which very well might be the case.

The GUI programming tool provided with Mindstorms is okay for doing trivial stuff, but it doesn't contain much in the way of flow control, so you hit a wall pretty quickly. However, one of the nice things about Mindstorms is that you can use several different high-level languages to write programs for the brick. RobotC seems to get high marks, but costs money. The syntax is C-like, but greatly simplified from actual C.

A lot of people I've known have 'graduated' from Mindstorms to microcontroller programming, using things like the Basic Stamp or PIC. There's a fairly steep learning curve / transition from Mindstorms to a micro, but it's certainly doable if your son remains interested and wants to get more into the electronics / robotics aspect.

On the pure software side, perhaps down the road a little if his interest increases, I remain convinced that Python is an excellent choice. It has the simplest and most beginner-friendly* syntax of any "non-toy" language I've ever used. It is also the language used by many Intro to CS curricula, including MIT's (who I think just recently switched from Scheme). If it's a requirement for you to have some sort of formal lesson plans or curriculum as part of your home-schooling, that might come in handy in the future.

The only criticism of Python is that it doesn't really have a facility for producing graphical output without learning about some additional libraries and basically having a grasp of how the language works. Almost every Python book/lesson/tutorial I've read starts you off writing trivial programs that do text-based I/O, and then gradually work you up to GUIs and graphics. I think is a fine way to learn programming, but I understand it might not appeal to everyone.

* "Beginner-friendly" in the sense of not requiring you to include anything in order to get a program to run that you wouldn't understand initially. You can write imperative Python that looks a lot like BASIC and will run just fine, and then when the downsides of this become evident, you can start using the functional and object-oriented features of the language, but not before if you don't want to. I.e., a 'Hello, world' program in Python consists of one line:
print "Hello, world!"
while the canonical helloworld.c is:
#include <stdio>
int main ()
printf ("Hello World!\n");
meaning you have to either explain all that stuff up front, or gloss over it until the student knows more. Neither strike me as ideal, and this is a problem encountered in a lot of 'real' (as opposed to pedagogical) languages.

posted by Kadin2048 at 10:31 AM on June 29, 2010

No such thing as too early. I started learning BASIC when when I was 7. Mindstorms and Scratch seem like a great place to start, but I would also suggest working on an Arduino project with your kid. Fun times!
posted by brand-gnu at 10:32 AM on June 29, 2010

Terry Pratchett said (via Susan), roughly:

Headmistress: But children that age can't learn algebra!
Susan: They don't know that. And they're doing quite well.

I had a teacher much the same when I was very young.
posted by dirtynumbangelboy at 10:46 AM on June 29, 2010 [1 favorite]

fun flash game based around the principles of programming: http://armorgames.com/play/2205/light-bot
posted by nihlton at 10:57 AM on June 29, 2010

My uncle started teaching me BASIC and FORTRAN when I was about 9 or 10, I think.
posted by elizardbits at 11:03 AM on June 29, 2010

Don't forget that old standby, PILOT.
posted by davejay at 12:20 PM on June 29, 2010

Isn't a LEGO Mindstorms set pretty expensive? I wouldn't underestimate a 9 year old's ability to comprehend something more than drag and drop. I was able to understand BASIC from library books at 9. Unfortunately, I didn't have the resources to actually create anything until 11 when my parents bought a PC and internet service. Ah the good old days when GeoCities and the like were peppered with teenage creations. HTML is free and he would be able to share his creations easily with friends and family.
posted by vilandra at 12:38 PM on June 29, 2010

My dad taught me the basics of BASIC when I was around 9 years old. I brought a book on BASIC programming for kids home from the elementary school library, and my dad walked me through the examples in books. I don't think I fully comprehended what I was doing, but I solidly got the idea, the concept, of variables, looping and iteration. When I took a computer class years later, I realized that the stuff I was learning in class was familiar to me.

I only casually do programming (basic scripting) in my job these days, but I frequently find myself reminiscing about one of the first programs I ever wrote- it was a computer pie eating contest, where after looping through eating the last pie, the program would print "I ate too many pies. I have exploded."

Definitely introduce the concepts of programming to your 9 year old. My dad did and I'm glad he did.
posted by mintymike at 1:40 PM on June 29, 2010

Oh, absolutely go for it! I was learning LOGO and BASIC when I was 8 or 9, and although I got away from programming in high school and college, the analytical skills I acquired from the hundreds of hours I spent hacking away at my Commodore 64 did eventually lead me back to programming, which is what I do for a living these days. I am forever grateful to my parents for letting me take that after-school LOGO class, and getting my that C64.

He might like Inform, which lets you build Infocom-style text adventures with declarative, prose-style source code like:
"Cave Entrance"

The Cobble Crawl is a room. "You are crawling over cobbles in a low passage. There is a dim light at the east end of the passage."

A wicker cage is here. "There is a small wicker cage discarded nearby."

The Debris Room is west of the Crawl. "You are in a debris room filled with stuff washed in from the surface. A low wide passage with cobbles becomes plugged with mud and debris here, but an awkward canyon leads upward and west. A note on the wall says, 'Magic word XYZZY'."

The black rod is here. "A three foot black rod with a rusty star on one end lies nearby."

Above the Debris Room is the Sloping E/W Canyon. West of the Canyon is the Orange River Chamber.
If he starts to get really into programming, whatever the platform, I would also recommend getting familiar with some kind of version control system - apart from being a good programming habit to establish early on, version control may also prevent a great deal of mental anguish; I can remember getting into problems that were just over my head, and mangling my code to the point where I couldn't remember how it looked before. Heck, I still do that sometimes. Being able to roll back to a functional version of my code is something I take for granted now, but back then it would have saved untold amounts of frustration & lost work.
posted by usonian at 1:45 PM on June 29, 2010

rur-ple was designed with teaching programming to kids (and their parents ;-). Many people that have tried it have commented positively about it to me.
posted by aroberge at 4:00 PM on June 29, 2010

Definitely not too young! I was trying to teach myself html and also trying to hack my one of my computer games (Dogz) when I was 10 or 11.

Sorry, no specific advice. But just wanted to chip in and say that it's definitely a great idea if he's interested!
posted by quirks at 4:40 PM on June 29, 2010

« Older character hijack on keyboard   |   Help me communicate with my Peking duck! Newer »
This thread is closed to new comments.