My 7 year old would like to learn how to program (his idea not mine, and he does things in the outside world so I am not too worried from that point of view. He already went so far as to take a game programming book out of my office to read at bed time.). The other day we sat down and wrote a very simple number guessing game (you pick 8 and it is correct, anything else it is wrong).
It went OK but there were a number of questions he had based on the syntax of the language (I happened to pick Java as I had the IDE opened at the time...). I teach post-secondary introductory programming courses so this was a bit of an eye opener to me (most students out of high school are reluctant to ask questions) as I really had to figure out how to explain syntax to a 7 year old.
Clearly any C type language is going to have the same issues, as will most “languages”. I looked at squeak but decided not to use it yet. I looked at the Alice environment but didn't like it for this either.
From a physical point of view he is comfortable with a keyboard/mouse and can put together Lego sets with relative ease (so following directions with a fun outcome works for him). I have access to Lego NXT but he is still a bit young for that (it takes too long to see the results of the work, even with the supplied graphical environment).
Ideally I'd like the experience to help him build up confidence in math and logic (if a 7 year old has logic :-).
I remember using turtle graphics/logo as a child. I am leaning towards this but wondering if there are any other ideas or if anyone can recommend a good logo environment?
Edit 1:
Logo works out well. I'll need to teach him the concept of angles (90 degrees, 180 degrees). Unfortunalty they don't really do division at school yet so angles might be fun...
First off draw a square:
FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90
FORWARD 50
RIGHT 90
At some point later I'll go into loops:
REPEAT 4
[
FORWARD 50
RIGHT 90
]
And then variables:
make "length 50
REPEAT 4
[
FORWARD :length
RIGHT 90
]
This works out very well. Virtually no syntax, easy for a 7 year old to remember the vocabulary, and immediate feedback.
Edit 2:
Well it was a success, in that he was able to write a simple program (no loops yet) while I was out of the room. It actually works out very well - we went out and got to graph paper and a protractor, we fugured out 90 degree angles, and he made a bunch of squares, turned a square into a rectangle, and got to see where he went wrong and how to debug it. I'd recommend this approach for anyone with a 7 year old who is interested in programming. I think I'd recommend it to my post-secondary students too (!)