I am going to buy a PC for my kid as a birthday present, so I'm thinking how to use it educationally. Of course, an obvious choice is teaching him how to program.

I'm not asking what age should a kid be to start learning programming. I wonder what he should be able to do, in order to learn programming efficiently? What is the proper level of development for a kid to learn programming?

I think programming is rather more likely to teach your kid the things he needs than the other way around. But he'll need to be able to read/write and use a computer of course. Although there are programming style games that doesn't use text.
–
Lennart RegebroMar 30 '11 at 20:01

Not an answer, but you may want to look into Scratch, it combines creativity with logic in a fun way and has a great support base. There was not as much as I would have like under the "for parents" link but I am sure that they have more detailed info.
–
kleinegJul 30 '14 at 14:17

7 Answers
7

Abstract thinking, Pragmatic Thinking, Higher problem solving. Design Patterns ( Not programming in general but building. Building in sense of building, construction. Did you know that design patterns come from designing buildings and problem solving in engineering? )

Also i would recommend starting with the famous little programming language for kids: Logo. There are actually pretty good games to get your kid started.

But you can Google that so i wont bother copying in those results. Your main goal is getting his attention and getting him to think like a programmer, or at least start to think like one.

After that you can start with applying the knowledge to algorithm and lower problem solving and object oriented programming.

As i kid i loved automating everything. That's why I'm an automation test engineer today. It might be fun to show your kid how you can automate tasks. How you can manipulate the windows, and everything what you pc does. Also some real world interaction like OCR with a video feed perhaps. Or a basic motion tracking system with a cheap camera.

I think the kid would be very happy if for example he could spot if his parents are nearing his room. :) Or build a little lego robot and program a routine into him, like go get me milk. Which is difficult but get's him started and will have a goal too and a real life experience which is VERY important in the early years.

I used to teach Logo (free download nowadays) to first graders. They need to know the alphabet, they need practice finding the letters on the keyboard, and they need to have a basic understanding of numbers. Most Logo "words" are only two letters long, and working with Logo teaches number concepts like angles and sizes. By age 9 or 10, kids can do some pretty amazing things with it.
–
MJ6Apr 11 '13 at 5:24

Learning how to read music sheets is very similar to learn how to read code.
–
Per AlexanderssonJun 20 '14 at 19:36

I recommend tedfelix.com/qbasic as a guide to the building blocks. You don't have to use qbasic or freebasic if you want to modernize the document. But if you skip the floppy disk stuff, everything covered here is where everything else is built on top of. All my code is in some more complicated way or another, those simple commands. (In the respected langauge I'm coding in that is). Legos sound more fun though I would have never been able to afford the programming lego in my day.
–
MallowJan 2 at 21:33

I started when I was 6 or so—I didn't have any particular pre-requisites, I just liked exploring (especially on the computer!). I actually found QBASIC on the computer myself, had no idea what it did or how to work it, and asked my father—I had no idea it was to do with "programming" or what that was—but he just showed me how you could tell the computer to 'do' things (at first adding numbers, then displaying messages, then asking for input and doing something with that ..), and it would do them for you! The very nature of being able to instruct something else (me! a six year-old!) was the hook.

Later, he showed me how to access the help files myself—that was invaluable. Now I'm a software engineer, with no experience other than my own.

Students will be able to build LEGO models featuring working motors and sensors; program their models; and explore a series of cross-curricular, theme-based activities while developing their skills in science, technology, engineering, and mathematics, as well as language and literacy.

Probably through games like these, he will be much more motivated, and it will be easier for you specially if you do not have a solid programming experience.

Yes indeed. :) I just added Lego robotics to my comment to. I forgot about them, but generally they are the most fun things. :D I'm past 30 and still love to fondle with lego robotics.
–
HannibalMar 30 '11 at 10:52

@hannibal Unfortunately I did not had any lego's when I was a child! I cant wait though for my son to grow up a little bit and start playing with him! Specially these robotic stuff seems so great! :)
–
nucMar 30 '11 at 11:00

Ahh yes indeed. :) You will enjoy them very much. But be careful not to enjoy it more then your kid. :D Or get some for yourself to... :)
–
HannibalMar 30 '11 at 11:06

Can't wait to check out Kinderlogo, and for the record my first grade class did well with vanilla logo. I'll have to dig up one of my old cassette tapes with the programs I wrote.
–
DavidMar 30 '11 at 14:34

I am a coder, so I just encouraged my kids to 'help' me from an early age. At two or three years old they were on my knee watching me writing applications and generally hacking so as soon as I could free up a spare laptop I gave them a triple boot linux, solaris and windows box to play on.

Basic shell coding seemed simple from 4 or 5 years old, and have the eldest looking at Ruby on Rails - he's 10.

Of the three of them, my eldest is the only one who actually seems interested in developing games, but the experience the younger ones get is likely to be useful anyway.

The one rule I always did have though was that they use the laptop in the same room as me or my wife - I don't use any censorship software, but I'm there if they do come up against something unsuitable - and it makes for a pleasant working environment.

"Basic shell coding seemed simple from 4 or 5 years old" - could your kids already read and write at the age of 4? I can't imagine how you could program a computer without reading and writing skills.
–
BBMJul 25 '11 at 21:33

Yes - they could easily read simple words at 4. Computers use a very simple subset of words.
–
Rory Alsop♦Jul 25 '11 at 22:06

That's really great how you encouraged your kids to help you and had them doing shell coding at 4-5. I'm curious, 4-5 seems very young for shell coding, I'd imagine they would've been programming Ruby on Rails by 5-6 then. Why so long for the jump from shell coding to web programming?
–
at01Aug 1 '11 at 22:01

+1 for getting your kids to 'help' you. Spending time with your kids and giving them responsibility is a big step towards getting them interested for the right reasons.
–
dewordeMar 4 '12 at 1:40

In addition to the other suggestions, I'd say make sure he can type relatively accurately. My nephew has an interest in programming, but his typing errors cause lots of problems and he gets pretty frustrated with it.

Frustration is part of the learning process. You should know how much frustration I went through (and sometimes still having) when it comes to programming
–
user35Mar 31 '11 at 8:25

Frustration with learning the structure of programming is one thing. Frustration with inability to type without spelling errors (which will cause all kinds of program or compile errors) is another thing entirely. If a kid can't type a sentence without mistyping words due to keyboarding errors, he (or she) will not be able to get to the "good" frustration of learning to code.
–
alesplinMar 31 '11 at 21:46

This might sound strange, but get him some source-code for simple games, show him how to type them up (or create them), and let him go at it.

That's how I got into programming at age 7 -- typing up game code from a Quick Basic book my dad bought me from somewhere. An intense 30 minutes of typing 10-100 lines of code, followed by hitting "run" and hours (ok, minutes) of glee.

That's a great solution because it ties effort into results. And what kid doesn't like games?

This link has been on my todo list for a while. http://www.qimo4kids.com/ You might find some interesting resources there.
But to answer the question, I think that it is difficult to answer this as an adult. Our upbringing, which includes our programming learning process, differs completely. My daughters of two are understanding things I did not when I was two. Then there was gps. My father did things with computers, but on punchcards. Casette recorders are objects from the past. I am pretty sure that programming as we know it today, will not be the programming done by my daughters if they take the same profession as me.
So my perpective is to provide my children with a computer environment that fits their. I have not checked it yet, but I guess gimo will do. I guess the programming learning progress will just follow. That is if they have interest in the matter. Could be that they prefer gardening in the end.