views:

381

answers:

12

Possible Duplicate:
How to get kids into programming

I know, it's impossible. However, if little one should go and follow daddy's steps, he should begin early. I started with some Z80 based comp made in Yugoslavia, and were 10 years old...

Then there was no 'net, no flash, no anything. Only tapes, screwdriver and hoping that the game will load.

Now, here are thousands of various games, content that can distract you, ... In all of that, how to lead the Small One into that world? Maybe logo and turtle graphics, maybe with some ultra-simple game editors, what?

Any idea?

+3  A: 

When I was in elementary school, we played with Logo. I didn't actually know that I was programming at the time, I just thought it was fun to see the little turtle move across the screen. It definitely laid the ground work for my future career.

Kevin
Same here. I still remember writing a hockey player shooting a puck into a goal. I was so proud. (I still am!)
Steve
Played with logo as well...the went on to MS Office...Now im back on the good side.
Tom
+1  A: 

Check out SmallBasic.

Learn the programming concepts starting with the fundamentals and move your way up. Small Basic is based on .NET and what you learn here could be easily applied to other .NET programming languages like Visual Basic.

Here's a quick sample app that moves a turtle around on the screen (full source of the program):

Turtle.Speed = 9
For i = 1 To 4
    Turtle.Move(100)
    Turtle.TurnRight()
EndFor

Also, this link has a bunch of resources for teaching kids to program.

GalacticJello
A: 

Some of the related links on the lower right of this post have great suggestions, like Ceebot and Colobot.

I think with a little instruction they'd love the graphics of these "games" as well.

CrimsonX
+7  A: 

I would say that the first concern is whether the child can read or write at 4 y/o. Otherwise, that's a major hurdle for most attempts to teach programming. Reading is also critical because it requires one to combine a sequence of elements into a composite that means more than the sum of its components. A program (or even a statement) is based on the same principle. So I doubt a kid can understand real programming concepts if they're not yet at the reading stage.

However, if the kid cannot read yet, it might make sense to start with things that involve a chain-of-effect. For example, an animation tool where you draw a path visually for each sprite, and then "run it", and see everything working together. It is (rudimentary) a form of programming that may excite and please a kid before reading and writing skills have developed.

Games that have cause-and-effect and mimic real world are also a good idea. For example, there was a classic game called The Incredible Machine where you had to design nifty machines to get items from one point to another. This can be a good foundation to programming because you have to design, plan, test, fix and refactor with a lot of trial-and-error. Programming is trickier because it's an abstraction, but the skills are similar.

Uri
+1, but I started reading at 3. If you stimulate (and don't press) a very young child can do a lot of things.
helios
@helios: My problem was that I could read and write, but not in English... Hebrew is written with different characters and in the opposite direction. I was only able to start BASIC around 7 or 8. Before that, it was Logo since we had Logo in Hebrew.
Uri
Check out ToonTalk for a realization of something like your programming-by-animation suggestion. (Link in my answer.) It's Turing-complete and quite neat -- I'd have played with it more if it weren't Windows-only.
Darius Bacon
A: 

Have a look at this book: http://www.amazon.com/Hello-World-Computer-Programming-Beginners/dp/1933988495

Scott Hansleman did a pod cast on this and it sounded really interest!

Link to PodCast: http://hanselminutes.com/default.aspx?showID=212

Zeb
+10  A: 

I'm going to go on a slightly different route here: Lego Mindstorms. No, I'm serious. Kids need to play with Lego anyway. I think it's one of the best toys to express creativity, explore physics, mechanics, and all that good stuff. It's fun to look at, to touch (and unfortunately also to swallow, so you have to be a bit careful with that part).

So Lego Mindstorms is natural extension. They'll learn programming, electronics, robotics, etc. They'll have fun doing it, and they can show off their creation to everyone (it's universal that everybody thinks robots are cool!).

Blah-blah-blah I can go on and on but I truly think this is the best way to do it.


I'll write a bit more: the other reason why this is the best way to do it is the ease of transition. You give them regular Lego, they'll quickly pick it up and play with it. They'll explore their own creative minds, etc, but then realize the limitation of inanimate dumb objects. So, driven by their own desires, they'll gravitate to Mindstorms naturally, and discover more and more cool things as time goes on.

I don't think you get this kind of fun self-motivating learning curve by sitting a kid in front of a computer right away.

polygenelubricants
Agree! In my opinion, Lego was always more fun than Capsela, Erector set, Tinkertoys, Lincoln Logs, etc.
Steve
I loved all of those as a kid. Legos were great though, Lego really got me into programming and robotics...one of my first languages was the NQC language. +5 for Lego Mindstorms, especially now that they're ARM-based powerhouses.
Xorlev
If I'm not mistaken, Lego Mindstorms is rated for much older ages because of the small parts. I'm not there with my kid, but a 4 y/o might still be at the "ingesting small parts" stage.
Uri
+1  A: 

In ToonTalk you can program without being able to read. The papers page has some relevant-looking titles like "Embedding Computer Activities into the Context of Preschools".

Darius Bacon
A: 

If you're not making programs out of cheese, that you start by waving a magic wand, and that are written in an Elven tongue then I just don't see it happening :)

Alex Baranosky
A: 

I had good results teaching elementary-grade children programming using Stagecast Creator. This is a purely visual computer programming language that runs in a web browser. It requires minimal language and mathematics skills.

Dour High Arch
A: 

I've started with a couple of programming books for kids. I suppose there are many of them. I was 11, so it could be too much for you 4 y/o boy. But anyway you can research that way.

helios
A: 

This is essentially what my father did to me. I'm not complaining, it's a decent job and I'm loving doing what I do in school. But in any case, let's assume that your child does indeed want to be a programmer. Here's what was done to me that I think helped quite a bit.

Start with something like logo. I don't remember at all how it worked, but I remember that I typed things like FD 100 to make the little triangle go forward 100 units and LEFT 90 to rotate. It was a good program and I learned quite a bit from it, I think. However, the biggest influence came from taking programming classes with my father. Don't start your child off with any BASIC-oriented languages, because I think that might set them up for something awful. Instead, start them off with a Python class or something that you go there with them. Make sure they can navigate their way around a computer first, though. And then they can just go through some

print 'Hello World'

type stuff with the instructor and learn a little bit as they go.

If you're going to do this, though, you really need to wait until they're about 10. Make sure they know how to use a computer well enough. Then start them off with something like this, I think.

ashays
A: 

Since most real programming involves a certain degree of literacy and mathematical background, I would think the best thing you could do at that age would be to teach the fundamental concepts underpinning programming. Namely, work on logic skills (cause-and-effect, scientific process, etc) and problem solving.

Out of everything that I did as a child, the two things that best prepared me for programming were a) playing with Lego and b) learning to love solving puzzles. Playing with Lego gave me a love for creating things and dramatically increased my spatial aptitude (the ability to visualize a problem and to visualize constructing a solution). Puzzles (or any game that requires thinking and reasoning to solve) of all types taught me how to go about solving both abstract and concrete problems, and that there was often more than one solution.

These are the fundamental skills behind programming. I learned these as a kid, and my curiosity eventually lead me to programming as an easy way of doing the things that I love to do.

When the child grows up, programming will likely be very different from what we do today (think about what programming was like 15-20 years ago). Teaching specific programming skills (languages, etc) would only be marginally useful but teaching the fundamental underpinnings of programming will always be useful.

bta