Programming for kids
April 5, 2011 12:19 AM   Subscribe

Best resources for teaching 6yo kid to program?

I was telling my 6yo son about LOGO programming and he'd like to give it a whirl. What is the best way to tackle this? I'm no longer sure whether LOGO is the best way to go or whether I should try him out on some other programming language.

I had been thinking LOGO because he's just in kindergarten and he wouldn't need super strong reading skills to get started. The turtle provides quick, visible results. But I'm open to other ideas.

(He's a very bright kid, but we haven't spent a lot of time on learning to read, so, while he's above grade level, he's never spontaneously written things out a lot before, so I don't want really difficult code. He loves engineering, though, and I think he'd like programming. I learned BASIC at 7, but I was thinking something more results-oriented, like LOGO, would help him get started.)
posted by acoutu to Technology (20 answers total) 31 users marked this as a favorite
For a really quick fix, you might take a look at Robozzle. It's a programming puzzle game that's almost entirely visual (a few text labels) and introduces ideas like sequencing, subroutining, conditionals, stacks and recursion. The downside is that the puzzles quickly become very "puzzly," forcing you to work with ridiculous, arbitrary constraints as opposed to leading you towards more general programming concepts. On the other hand ... free.

I believe the web version of Robozzle requires Silverlight, but you can also get it for iOS (still free).
posted by zanni at 12:54 AM on April 5, 2011

Perhaps check out Scratch — it's a GUI-based programming environment based on Smalltalk (Squeak, in particular). It has all the usual programming constructs, but allows you to put them together via drag-and-drop.
posted by joeycoleman at 1:05 AM on April 5, 2011

What about a Lego Mindstorm? At it's most basic it's a pretty gentle introduction to conditionals, etc, and also - Lego!!
posted by ukdanae at 1:10 AM on April 5, 2011 [1 favorite]

Also check out Etoys, another GUI-based teaching environment on top of Squeak/Smalltalk. Etoys is included on the One Laptop Per Child machines as the easy for kids to learn to program program.
I get this back of the mind evil "muahahaha" laugh when I think about an army of kid Smalltalk programmers swarming over the Javascript/Python users.
posted by zengargoyle at 1:59 AM on April 5, 2011

There's a turtle module for Python.
posted by anaelith at 3:35 AM on April 5, 2011 [1 favorite]

For something web-based, consider something like LightBot. It's more of a logic puzzle with programming as a "follow this series of commands" tool. There's also a sequel, but I haven't played it. For something a little more advanced, see if you can track down a copy of MindRover.
posted by Wild_Eep at 4:57 AM on April 5, 2011 [1 favorite]

Snake Wrangling for Kids (Python) is aimed at that age group. It's a free electronic download.
posted by amicamentis at 5:11 AM on April 5, 2011

Half answer / half question for the rest of the folks out there -- is Shoes still a viable answer for this, or has it gone the way of the dodo with _Why?
posted by inigo2 at 6:12 AM on April 5, 2011

I started last year with my 7-year-old. First we played Zork. Then we started building our own game in Inform 7. I would type, he would provide the ideas. I'd never worked in Inform 7 before, and hadn't even used Inform 6 in years, so I was learning at the same time he was. When we came up against something that we couldn't get to work, we'd read the documentation and try lots of different things until we got it to do what we wanted. The great thing about Inform 7 is that the program is written "natural language" style, so it teaches you to write in complete sentences, use punctuation, etc., which is a really great lesson at that developmental stage. We wrote three games (up on, and by #3, my son was doing it himself, just coming to me a couple of times with bugs he couldn't squash. (This also got him typing by himself, another huge skill in this day and age.) He was really enjoying it, but he got a little frustrated that his friends weren't too keen on playing games with no graphics. So I downloaded Scratch. I opened it up to play around with it, he grabbed the computer away and started in with no help from me at all. That's what Scratch is designed for. Now I'm wondering what the next step is, to bridge to some more useful or official language.

It's been tremendously edifying to see my son programming. He's grown up loving puzzles, and programming is like solving puzzles, except you're making something creative at the same time. It's also made him much more interested in writing and typing, things he's balked at in the past. Not every kid is going to appreciate Inform, but it tickled all the right neurons for us.
posted by rikschell at 6:26 AM on April 5, 2011 [2 favorites]

This previous AskMe might have some additional pointers on teaching programming to kids.

rikschell, in that previous AskMe I link to an OSCON 2008 talk by Nat Torkington, "Spawning the Next Generation of Hackers". He discusses moving from Scratch to Processing in teaching his own kids to program.
posted by needled at 6:38 AM on April 5, 2011 [1 favorite]

Seconding ukdanae. If the kid is into Lego, then Mindstorm (I believe NXT 2.0 is the current set) is very much the way to go. My son (also six) just started on that and the programming language, while fairly basic, teaches the, um, basics. That is: the concept of what a program is, what it means to give instructions to a computer and have it carry them out, etc. I don't know how relevant concepts like subroutines and such are in an object oriented world, but it teaches those things as well. It's not cheap, but you get to build robots and learn about sensors and such.
posted by The Bellman at 6:46 AM on April 5, 2011

If not Mindstorms, there's some very basic programming in the Lego WeDo robotics set. We found Mindstorms to be a much better investment (the WeDo robots are very limited whereas you can do pretty much anything with Mindstorms) but my younger son, who just turned 7 two weeks ago, has enjoyed WeDo. I think most six-year-olds would find Mindstorms too challenging, but if you're right in there with him working on it, you can let him do what he can and do the rest yourself. That's what I did with my older son. And there are a lot more resources (books and websites) for Mindstorms. Still, WeDo can be a good choice for a younger kid.

I have an iPad app called RoboLogicLE that gives you challenges and you use drag-and-drop to make little programs to move a robot through a course. It's been pretty fun for my kids. There are some challenges you can't solve without using a subroutine. It's more like a game.
posted by not that girl at 7:03 AM on April 5, 2011

Microsoft has a game development platform called Kodu that is aimed at teaching kids some of the fundamentals....might be worth taking a look at, or keep in mind if it is something that could be grasped easier at an older age.
posted by samsara at 7:08 AM on April 5, 2011

Carnegie Mellon University recognized that fewer and fewer students were going into programming. So they decided to start young by creating an app for learning object learning programming. Here's Alice.

I might add, this is good for older folk who feel like they somehow missed this part of their education (like me).
posted by Taken Outtacontext at 8:28 AM on April 5, 2011

I've wrestled with this issue a bit. IMO, Logo is not optimal for very young kids because of all the math involved in turning the turtle. Scratch is more fun and easier for them to pick up because of the friendly working environment and rewarding, cartoon-ey results.

My 11-y-o started on Logo at about 8 or 9, then tried Alice, then Scratch. (Alice is like Scratch but 3-D and more cumbersome; Scratch is hands-down a better option for young kids.) At this point, he does some LEGO Mindstorms stuff and is working in Python using an O'Reilly book, the easyGUI package, and the Snake Wrangling for Kids tutorial recommended above by amicamentis. But I think he's dropped Scratch mainly because he's aging out of the "programming for kids" demographic and growing interested in more real-world programming, which makes Python a better choice.

Nat Torkington is the big name in answering this question. I'd watch needled's link. I hadn't heard of Processing; if Nat's using that now, it's a pretty strong endorsement.

But I know Nat's kids are about the same age as mine, so it may be that he's moved on from Scratch because his kids are ready for more or have a specific artistic interest that Processing serves well.

tl;dr: I guess I'm recommending the "Scratch, then Python later" path.
posted by richyoung at 8:30 AM on April 5, 2011

Response by poster: Thanks. Great suggestions. As a mom who used to program a lot but went on to work on the non-techie side of things, I'd like to know what Python is and whether I have to know how it works to use it -- if you have any tips, those would be great.

Above, the recommendations for Zork and RoboLogicle are great. I hadn't thought about it, but programs like those are great ways to introduce the early concepts. I wonder now how much Adventureland helped me....
posted by acoutu at 8:42 AM on April 5, 2011

Python is a programming language. It is pretty simple, with minimalistic syntax. If you're familiar with C or Java then you could pick it up very quickly. You'd need to install Python and set up a shortcut or something to take him into the interactive environment on the command line, you'd probably also want a text editor with buttons or macros for "run" at some point, too.
posted by anaelith at 8:52 AM on April 5, 2011

Python has a text editor/IDE called IDLE. While I love python, I wouldn't suggest it as a child's first language simply because it isn't super easy to get graphics up and kicking. I'd suggest Processing which is all about the easy graphics. If that gets him excited, then I'd see about Python.

Another option is to pick up an Apple II emulator and install LOGO on that. The Apple II was a great computer learning platform since the whole system was comprehensible and open. And again, getting graphics up was easy. The downside is it was a particularly ugly BASIC (both of them) and 6502 assembly was also kind of a bear (no multiply instruction, 8 bit registers, fix stack size... blegh).
posted by chairface at 3:42 PM on April 5, 2011

Acoutu, one big thing about Python is that white space is used to define blocks like loop or conditionals - for example,
if (foo < 5):
   print 'Foo is less than 5'
   print 'This also is within the if block'
print 'But this line will execute regardless of the value of foo, because it is not indented.'
Many people think Python is a great starter language because this odd characteristic forces the adoption of good habits that make your code more readable.

But as chairface just pointed out, it's not very rewarding for a newly-literate child of six, who will tend to have trouble finding typos and spelling function names correctly. Something like Scratch or Alice allows them to learn the concepts of programming in a drag-n-drop, select-from-the-list environment. They can move on to less helpful languages later, and the understanding of logic and flow control will transfer.

Not to derail, but does anyone familiar with Processing have a screencast of writing a simple program they could show me? I'm intrigued.
posted by richyoung at 9:18 AM on April 6, 2011

Response by poster: Awersome answers, everyone. No best answer because it's really the whole thread that helps.

I downloaded Zlogo the other day and got him started on that, but I'm looking forward to trying some of these other programs.
posted by acoutu at 10:54 PM on April 7, 2011

« Older Sushi cupcakes?   |   The awesome power of the sun means nothing without... Newer »
This thread is closed to new comments.