views:

388

answers:

15

Possible Duplicate:
Whats a good age to get your children into programming?

I have a very smart son of 6 years old. I wonder whether is that a good age to start teaching him programming? Are there any literature and/or sources on the web about doing so? What language should my kid start with (Functional Programming like Scala/LISP, Object-Oriented one like Java)?

+7  A: 

I don't know if you want to "teach" programming as much as expose your son. :) He's young, so maybe he'll like it, but maybe he won't.

If you do want to, though, a great place to start is the Alice project. It's designed pretty much for this specific purpose. It provides an interactive world that your child can easily write software for in a java-y way. It provides a way for your son to tell stories via code, and that's something that every child I've ever met has loved doing. (Tell stories, I mean, not write code. :) )

Greg D
+1. I also agree to the "expose" part. Show him Alice, and see if he likes it. If he likes it, support him, but never push him.
Vilx-
+2  A: 

Its probably worth getting him excited about the end-goal, eg a website, rather than than the means to get there, then the rest should come naturally, it will be up to him where, how or if he progreses on from that.

Mark Redman
It's a kid! He wont take the time to do a "project" per se :) How many times do we read about people who abandon their homeprojects as it's not that fun after the initial stages. A few if's and a printf will either hook him if he's into programming or not if he dislikes it.
cwap
Sure, I mean a website for a kid, eg: It could a be a single page with a picture of himself and his friends that can be seen by his friends. What kind of "project" were you thinking of?
Mark Redman
Even that is huge in the eyes of a six-year old with an attentionspan that's broken if he finds some old candy on the floor :) My point is that end goals are not something kids are interested in. They want something right here, right now - Not tomorrow. Aaand they aren't really interesting in visualizing "how great my personal homepage will be" :)
cwap
BTW; sorry if I came off harsh, that certainly wasn't my intention :)
cwap
I agree on the attention span bit, an ddo mean a small goals :-) but a one pager could be quite a small task, ie adding one image and some text. No offence taken by the way. I think I may be exclamation mark sensitive.
Mark Redman
+4  A: 

I guess he should first study mathematics and then go into programming

Ahmad Farid
+1 definitely agree.
Vijay Dev
+3  A: 

There's c# for sharp kids, and the article of the link recommend starting at 10 years or higher. But you could give it a try a little earlier if he's that smart...

Samuel Carrijo
+4  A: 

I've been thinking about this too (our eldest son is 5). I would be tempted to start with Logo (and indeed that's what I started with). It has instant feedback and gets some of the ideas of programming without too much other stuff getting in the way.

There are also various education-inspired languages you might want to check out - I believe Squeak was originally meant for kids, for example. I wouldn't personally start off with mainstream languages such as Java/C#/Scala etc though - there's a lot of stuff which gets in the way of the whole "instant gratification" part. I'm pretty sure my son at least would get bored with just text fairly quickly...

In terms of books, you might want to check out Hello World! which is specifically aimed at kids. (I must read my review copy some time... a colleague recommends it though :)

Jon Skeet
No! My answer's been Jon Skeet'd! ;)
Greg D
I was about to suggest Logo too. Maybe with a robotic turtle to draw patterns over your carpet. That'd make it more fun.
pjp
Logo link http://www.softronix.com/logo.html
pjp
A: 

Teaching him a functional programming language like Haskell would be very good especially if he excels in Maths.

Usually, I would recommend Visual Basic to new programmers. However, programmers who have VB (VB6 not .NET) as their first language tend to (NOT ALWAYS) write sloppier code than those with Java or c# as their first langauge, insofar what I have witnessed.

waqasahmed
Haskell? Why not throw in some Cobol and x86 assembler too? He's six!
Paul Dixon
Haskell for 6 year old? WTF?
epitka
loll... he did mention "a very smart son". Teaching Haskell would lead to a greater understanding of logic/Mathematics in Programming resulting in efficient programs.
waqasahmed
Forget Haskell, go straight to BrainF***.
Mark Rushakoff
Even if he was the lovechild of Donald Knuth and Edsger Dijkstra, I wouldn't do that to him! :)
Paul Dixon
I agree with you - I won't do that to my kid. Will just try to inspire my kid to play some games, then little by little explain him how those made,etc.. Myself - started programming at 13.I LOVE the comment "klabranche" put together.
Roman Kagan
+1  A: 

I was about 8 when I first picked up a BASIC book and wrote this on my Commodore 64:

10 PRINT "Dean is a dork"
20 GOTO 10

Dean is, of course, the name of my younger brother. From there I just kept adding stuff to see what I could do. By 14 I had a 2D spaceship game with support for two joysticks, sound, multicolored sprites, and collision detection.

Neil N
Hmm this will just encourage him to ask why `goto` doesn't work in Java in a couple of years time.
pjp
right because the first thing I asked in Java was where is malloc? ::roll eyes::
Neil N
+3  A: 

Buy him and Xbox360 and get Kudo from the IndieGames Channel. Or give him Lego Mindstorms (has a nice GUI to create simple programs with). Another idea is the RPG Maker Series - this got me on fire (but again, you really need to be able to read).

However, 9 seems to be a more reasonable age for this. And I wouldn't even try to go with real programming languages.

Marcel J.
I want to play with Lego Mindstorms
pjp
Lego Mindstorms is a great Idea IMO. It's a great toy, and you can seee if your son likes the idea os solving problems without too much hassle. Buying a couple of kits you can try to create great robot battles between you two!
GmonC
+1  A: 

If he's interested he's old enough. Small Basic has been designed to be a modern introductory language.

wefwfwefwe
+1  A: 

My first programming language was COMAL, which was created in part for teaching purposes. I think I was about eight years old.

Today, I guess as a language I would recommend Python. It has very little overhead before you can actually do stuff, and you don't have to stick to a certain programming paradigm. A "hello world" is a no-brainer, and you can go to all possible directions from there.

balpha
+1  A: 

Funny, I was looking at this myself. Take a look at this:

http://devlicio.us/blogs/billy%5Fmccafferty/archive/2009/09/01/programming-for-kids.aspx

epitka
+1  A: 

I found the Kids explaining Python interesting to watch (German spoken, english translation). Don't know exactly how old they are but they seem to have fun with it and it may be a good start to get someone the same age into it (well as a good parent you would never force you child into it - no matter how smart he might happen to be).

Daff
+1  A: 

I like the idea of modelling4all, which is a website that allows to define behaviors of ants (or other 'agents') and then simulate those ants, share behaviors with other users etc. See if this is fun for him, but don't push too hard.

__roland__
+1  A: 

I think its most likely too early to introduce programming, per se. Just think of all the people who pressured their kids to study the violin only to have the kid hate it (and them) by the time they can appreciate such a skill.

It may work better if you start by encouraging him to ask lots of questions about how things work in the world around him. Get him used to trouble shooting and working out complex or abstract ideas on his own. Establish the basics of trial and error hypothesis testing.

Then when he is a bit older you can see if he enjoys bringing those skills to programming.

Rob Allen
I think I had an electronics set at that age. It was fun making my own battery less am radio.
pjp
I had a specialized building set call Robotics where you built a structure and added motors to it that were controlled via a wired, numbered panel. I have a Mindstorms set now for when my 5-month-old gets bigger. But I really don't want him to hate code because I forced it on him too soon.
Rob Allen
+8  A: 

Posted my comment as an answer.

Let him be a kid. I wouldn't bother teaching him such a focused skill at this age. Teaching him to critically think via normal life experiences would be my goal. Let him remain a child for as long as he can. Let the boy play! :) If he was 12 or so and asking that would be a little different in my book.

klabranche
+1. Your comment beat my similar answer by a couple of minutes. I need to type faster.
Rob Allen