views:

1251

answers:

17

I have a seven year old son. He is pretty bright and I want to show him that computers are good for something beyond playing games. My end goal would be to have him use a language (See Related question) to develop a program he can show his friends or solve a problem.

My question is how do I get started? I am fairly certain I will have to use a more visual language such as Alice but how do I go from playing "Mini Clips" to making his own thing? When do you know he is ready to go to more advanced languages? Any advice would be welcome!!

UPDATE: The kid has started using Scratch and is enjoying the heck out of it! So far so good.

+6  A: 

Alice has been something I hear mentioned quite often; although I cannot personally speak to it, you might give that a look.

Phrogram also looks promising.

Jason Bunting
+2  A: 

He may be a tad young for this, but Lego Mindstorms are a great way to get kids into programming.

Chris Upchurch
+7  A: 

Lego mindstorms? You program it by connecting "blocks" with "wires." And your son will get to play with a toy.

From there he can move up to Java and other languages.

The only thing is it's kind of expensive.

Michael Sharek
A: 

Your son is kind of young to get the mathematics and science behind it all, but perhaps with your assistance, the Coding4Fun developer kit can show him around his PC. Scott Hanselman has a lot of posts on using the C4F kit with neat hardware.

Anthony Mastrean
+2  A: 

_Why's hackety hack was created for this purpose, but I don't think you should try and get your kid to like programming, it'll often have averse effects.

wvdschel
+1  A: 

I would say none of them, perhaps get him his own computer to mess around with, like the majority of us did. If he wants to learn programming, he will come to you..

I don't really like the idea of kinda "grooming" a kid to be a developer..

Rob Cooper
I don't think the questioner is really "grooming" the kid to be a developer. I think all kids should get some sort of exposure to and knowledge of programming, just as they all get exposed to sports, music, art, and other important parts of our culture. Maybe the kid won't like it, but today anyone who doesn't learn how to make computers do stuff is going to be behind. "Program or Be Programmed", as Douglas Rushkoff says.
Kristopher Johnson
+14  A: 

I agree with others that Mindstorms is a great way to go. I've got an 8 year old daughter and she enjoys building robots... but it's definitely a supervised activity at that age. The physical building isn't too much trouble for them (unless they're tackling more difficult gears and that sort of thing), but we've found that it's useful to "talk through" the logic together of what she wants the robot to do before she heads into the programming environment. If you go the Lego route, look into this "Mayan Adventure" book -- it uses the story of a kid searching for ancient ruins and using his robot along the way. The story is organized into groups of three chapters - with one being the story narrative, the next being the walkthrough of constructing the robot, and the third being the programming of its logic. Then the story moves on and that cycle repeats. I've got no vested interest in the book other than finding that it was fun to work on together.

Even better, in my opinion, would be to start with Scratch. It's from MIT and has the same type of visual programming metaphor that you see with Mindstorms and others. It takes the LOGO-ish approach of letting the child/programmer draw on a screen and control the drawing using pen up/down, color changes, but it also includes some event-driven capabilities for responding to input and other advanced capabilities. The environment itself is really slick and makes it easy to figure out how flow control works, how loops are constructed, and so on. As a place to start, it has a few benefits over Mindstorms:

  1. It's free.
  2. There are lots of samples, which are a great starting point for your child to play "what happens if..."
  3. The turnaround and iteration time is fast because it doesn't have the hardware and save-download-run cycle that Mindstorms has. That fast turnaround really encourages experimentation.
Jeff Donnici
+7  A: 

I'd start him out with Logo.

Don't underestimate kids. They need a lot less dumbing-down than one might think, and they have a love for work that most adults lack. I have a friend whose 6-year-old son is learning Haskell on his own, with his dad checking his work. No 3D graphics, no dragging and dropping, and no campy cartoon characters for distraction. Just GHCi, a text editor, and the child's mind.

Speaking for myself, I was writing my own programs in BASIC when I was 7 years old. I remember playing games on my uncle's computer and being quite fascinated with it. I wanted to know how it worked, what made it go. When we later got a home computer, it came with a BASIC manual and I taught myself to write simple programs. I liked programming a lot more than I liked playing games, but the games served as inspiration for what was possible.

If your son has a curiosity for how things work, a love for math and that sort of thing, he will want to learn programming and you won't have to prompt him very much.

PS: Java, C++ and the like are definitely not for kids. Object-Orientatedness might seem like it should be intuitive, but it's actually quite difficult to reason about due to the complexities introduced by mutable objects. It's too easy to introduce subtle bugs that will take all the fun out of learning. Go with a consistent and clean language with a simple set of rules, like Logo.

Apocalisp
+1  A: 

Absolutely check out Alice.

The other thing I've done with my son is show him games where he can make his own levels. It gives him the experience of thinking through the design and playability before diving in. It also gives him the chance to "discover" that he doesn't have to be content with the way things are, he can make changes and make the computer do what he wants.

Ricochet Infinity from Reflexive Interactive(?) is a breakout style game that has a very sophisticated level editor that supports simple scripting of actions. He is getting very good at making his own levels and figuring out on his own how to hook up events.

Geoff
+1  A: 

Check out this site: Computer Science Unplugged

It has lesson plans and activities for teaching computer science concepts to kids

Autodidact
+1  A: 

You could give your son the best of both worlds and get him into games programming. ;-)

When I was seven I used QBasic, but there are many more modern languages that still have this basic syntax and are geared towards making games. Perhaps python and pygame would be a good bet.

HoboBen
A: 

Programming for Kids

17 of 26
A: 

How about SecondLife? The scripting engine gives kids a huge motivation to learn the basics of programming.

Eric Z Beard
A: 

I'd consider a tool like NetLogo. It's free, and quite powerful.

The last place I worked uses it for teaching middle and high school students how to build computational models.

warren
+1  A: 

Logo and BASIC are best for kids. BASIC is amazingly simple and has almost all the features of a great programming language. I myself started with GW-BASIC on MSDOS 6.22 then QuickBASIC the Visual Basic C, C++, , ,:P

But the thing is, many people have Vista running on their systems these days. Logo & BASIC as I used were DOS based, I'm not sure if these are as compatible to vista as back in my childhood.

Besides that I wonder whats in for kids with linux at their disposal! Is there any great thing like BASIC, Logo in linux for kids to start with ? they can't start with C or shell scripts ofcourse!

Abhishek Mishra
See www.qb64.net for a project that aims to be extremely QuickBasic compatible while running on new systems.
Artelius
+2  A: 

It looks like the original post was directed more towards younger kids, but for high-school aged kids, go back to your old high school and ask their career centers if they'd like to have someone come in and speak to kids in computer classes. I've done it a few times and I think it's a good way to give back to your community.

unforgiven3
A: 

As a child, I loved Robot Odyssey and Rocky's Boots, both of which taught ultra-low-level programming in the form of circuits built from logic gates. However, these are both too dated (graphically, in particular) and too low level as general purpose kids programming games.

I would heartily endorse Mind Rover (link to GameSpot review, official site unfortunately deceased) as a more recent offering in the same vein, introducing programming concepts in the form of components that are wired together to produce desired behaviors.

More directly related to actual programming is Colobot, a fun single player strategy game in which you learn an event-driven C-like language used to program many robots at once to accomplish RTS-like goals.

Of course there are many other bot combat games (C++ Robots, Robot Battle, etc), but few have much appeal to someone who is not already a programmer.

Sparr