views:

1864

answers:

26

I am looking for recommendations on a web site/software for providing an introduction to programming concepts for my 9 year old.

I remember using Logo/turtle graphics at a similar age and would love a simple self-contained web site that gave a number of step-by-step tutorials. There is some neat current generation Logo software out there, but the packages I looked at seemed more complex that I wanted for an absolute beginner.

Any experiences that have worked well?

Update: Thanks for all the great suggestions. The 'in-game' environments look like the best bet to start with, though I might just have to get some of the Lego NXT to see if it is suitable!

+1  A: 

Have you looked at Processing? It's a nice, self-contained Java-ish language aimed at drawing graphics.

John the Statistician
+1  A: 

BASIC is a very simple programming language which introduces you to all the "Basic" programming conventions.

And there is an online JavaScript version of the language available.

GateKiller
+3  A: 

Have a look at this thread. Alice is an excellent drag-and-drop programming environment that any 9 year old will enjoy using.

Justin Bennett
+2  A: 

The "Best ways to teach a beginner to program" might be a good port of call and though I doubt that the 9 year old is your Girlfriend I think that How to teach your Girlfriend to program may be a useful link too (disclaimer: I wrote it).

Teifion
+26  A: 
Bjorn Reppen
That's slick - Now my kid is going to be forced to play it with me!
Hugoware
I want to be 8 again?
DFectuoso
Ah! Do not teach the evils of `goto()` at such a young age! BEGONE!
Chris Lutz
@Chris Lutz - that tells the robot to go to a place, not a goto in the program. The language is workable (though Python would be better), and the game is incredibly fun.
Beni Cherniavsky-Paskin
+1  A: 

I think you could give a try to Robo Mind and and maybe LOGO. Good luck!

Kamil Zadora
+1  A: 

I was 9 when I learned HTML to make web pages, before I knew I liked programming. A year later, I was taught QBASIC and I remember thinking that my HTML experience would help me easily learn to program. Now that I'm more experienced, HTML doesn't seem very related to a "real" programming language (with variables and loops and functions...), but somehow I still did learn it extremely quick. HTML taught me to indent and nest blocks of code, and got me used to writing a plain text file and running it to get a web page.

For me, I think HTML then a simple language like QBASIC was the best way to begin programming.

yjerem
Yeah I think HTML can be useful for just getting into computers and figuring out how they work.
DW
A: 

Get an apple 2 it worked for me :P

Brian Leahy
+14  A: 

For a 9 yr old it might be a good idea to start with basics, that go before "language" itself. There is a board game called C-Jump that teaches kids basics, such as program flow, variables, constructs such as if/else, loops, etc. Might be something that gets a child thinking the right way, and would make the actual move to writing a language easier.

Ryan Farley
+2  A: 
Bob Somers
I had this when I was a kid, and while I don't think I ever programmed anything in it, it did teach me constructs etc.
pbh101
+11  A: 

Lego includes a neat little programming language with it's higher end Mindstorms (Robotics Invention System , NXT, etc.) systems. You use graphical Lego blocks to build if/then statements, for loops and other logic to power what ever you build with the physical blocks.

Rob Allen
+1  A: 

My father handed me c++ For Dummies, showed me where to find the IDE and said "go for it". Granted, I was exceptionally interested in software, so if you are just trying to find something to put in front of a child and see if s/he bites, c++ might not be the way to go. I simply offer my story as proof that it can be that simple.

Rex M
+10  A: 

Don't focus so much on languages and such.

The biggest thing is finding motivation.

Find a goal that your nine year old desperately wants to accomplish, and hand them the tools and manuals appropriate to do so. If they care about the task, they'll keep on keeping on until they've built their artifact and in th process learned a lot about how to program, at the nuts and bolts level. You might want to later offer some overview about version control, programming for maintainability, and so on.

When I started out, I wanted to write a computer game; I managed to consume all of the memory in the machine. Perhaps not such a problem today.

Josh
I disagree, the language is very important. It needs to have a simple syntax like BASIC. You don't want to worry about OO and version control, it's learning how to break down problems, writing simple algorithms that's important.Plus it needs to be fun! Quick to build and deploy!
Tarski
+5  A: 
broady
My daughter is 12 and has endless hours of fun at that site.
BoltBait
+1  A: 

I'd go for Squeakland and the famous Drive a Car example (powered by Squeak).

Smalltalk syntax is simple, which is great for children.

And later as the child evolves, he can learn more complex and even very advanced concepts that are also in Squeak (eg. programing statefull webapps with automated refactoring and automated unit tests!).

And like @broady said, Scratch (also Squeak based) is great too.

Sébastien RoccaSerra
+1  A: 

Hackety Hack may be too advanced already, but be sure to have a look and decide for yourself. I strictly advise against any dialect of BASIC for beginners, despite the name. Having started with QBASIC myself and gone on to VB6, I know this to be a big barrier because although I learned to script some simple stuff, it took ages to re-learn much of the basics. VB is a great too for an experienced programmer but it's counterproductive for beginners.

Konrad Rudolph
+1  A: 

I think the best way (because it was how I learned how to program myself) is to take your child into the past and out of GUI-land. Whereas my peers were all on Windows 95, I was stuck on MS-DOS 5 – which conveniently included QBASIC. In fact, apart from WordPerfect 5.1 and some crappy game, that was all I had on my computer. With the 80s-era BASIC programming books I borrowed from the library in hand, I let myself loose with QBASIC and began to write my first programs.

vt
yeah Gorilla.Bas!!!!
StingyJack
A: 

Alice from alice.org is a great (and free) platform.

not-bob
+7  A: 

Hi,

It's a bit late but what about Small Basic ? It's from the Microsoft DevLabs and was created by Vijaye Raji from the Microsoft Oslo team.

From the site:

Small Basic is a project that's aimed at bringing "fun" back to programming. By providing a small and easy to learn programming language in a friendly and inviting development environment, Small Basic makes programming a breeze. Ideal for kids and adults alike, Small Basic helps beginners take the first step into the wonderful world of programming.

Although, it may be a bit of a stretch, as this is from the FAQ:

In our internal trials we've had success with kids between the ages of 10 and 16

ip
Just wait a few years. It will be easy enough to be used by ordinary corporate drones who aren't programmers, and then we're going to have to maintain their enterprise apps.
Windows programmer
+1  A: 

Have you had a look at Smallbasic?

Lars Corneliussen
+2  A: 

Check out Greenfoot - I have been using it with my 8 year old, though it's too early for me to comment on it's efficacy.

My similar question has some answers which may be of interest.

Software Monkey
+1  A: 

A fairly fun "virtual robot" language is Guido van Robot, available at http://gvr.sourceforge.net/ . It's syntax is Python-inspired, but it draws a lot from the "Karel the Robot" teaching methodology.

And, if you actually want to start with the turtle subset of LOGO, it's implemented inside standard Python (http://docs.python.org/library/turtle.html). An example is at http://www.daniweb.com/code/snippet304.html . I'd actually start at GvR, though.

J.T. Hurley
+1  A: 
DrJokepu
I had to learn to read so I could learn to drive that :) What joy!
Adam Hawes
+2  A: 

I taught 4 year old children about programming and robotics with the Lego Mindstorms Kit. We made a simple car-bot and rigged a marker on the back end so that when it moved, the marker would draw lines on a huge sheet of paper.

After they saw what it would do, we played around with some of the built-in programs and watched the patterns change.

Then I asked them to map out on a large piece of paper (each kid had their own) a course for their robot. AT this point, they thought they were just pretending :)

Next, we cut out paper squares that looked like the programmatic code blocks in the Lego IDE.

First, I showed them what each individual code snippet meant. Start. Stop. Pause. Go Left. Turn around. Turn fast. Carve. Spin. etc.

Then we decided on a starting point on each child's drawing and began. If the kids put Turn Left before including Start, we talked about it. IF the kids contested or didn't believe that it wouldn't work, we tested it.

Each kid could edit their program in the IDE whenever they wanted to test a theory.

As more theories were tested, the kids quickly learned that they were in charge of every 'thought' their robot was having.

In the end, most programs reproduced the original drawings with surprising similarity. Some were even crazy similar.

This is way too slow for a 9 year old, but Lego Mindstorms has a tournament/league. Check at your kid's school or inquire around town. Could be possible to get him in there.

I volunteered at a league meet once and had a blast. The robots were very sophisticated and the solutions for solving the problems were great.

I just wish I could have done something like that when I was a kid.

42
+1  A: 

I read "Rescued By C++" when I was 10 or 11. I spent a couple of years going through that book and learned a lot. I'd recommend it.

edit: it's a bit out-dated now... maybe the author or publisher have a comparable book out ( http://www.amazon.com/exec/obidos/search-handle-url/ref=ntt_athr_dp_sr_1?%5Fencoding=UTF8&search-type=ss&index=books&field-author=Kris%20Jamsa )

DW
+1  A: 

I would check out C# for Kids from Microsoft... pretty cool and even being an experience programmer, it's kinda fun to go through it.

http://msdn.microsoft.com/en-us/beginner/bb308756.aspx

(I know this is an old thread, but I thought it would be worth adding for anyone else looking for the same thing)

tnolan