Archives for posts with tag: programming

Can we get a toddler to program?

Experiments in Programming with a 2-year-old

To answer that question I wanted to figure out if my son could “write” a simple program by manipulating symbols. In the spirit of my How To Train Your Robot game, I decided our contract was going to be “If you show me symbol X, I’m going to jump. If you show me symbol Y I’m going to lift my arms.”

The “symbols” ranged from Lego bricks to toys to stuffed animals.

We tried this when he was around 2 years old. It didn’t work. He was more interested in the physical object that represented the symbol rather than the meaning of the symbol in our “game”. I don’t think it had to do with him not being able to interpret rules, because he understood cause-and-effect (grabbing toys from other kids = timeout). I think it had to do more with not being able to interpret an object as something more than its obvious physical attributes (color, shape, and what happens if you smash it onto something).

Experiments in Programming version 2.5

So, I refined my game into “How To Train Your Robot To Jump”. Our contract became “Pretend I’m a robot. If you place an arrow facing upwards, I’ll jump up. If you place an arrow facing down I’ll do a push-up”. I thought that using arrows to face up or down should be less abstract. Also, I waited until he was 2.5 years old. He was better at paying attention.

We tried this new game and it worked!

Take the arrows…

Place them up or down…

And wait for me to execute the program…

Which is what programming is fundamentally about: use a language to describe a task that is automated and whose results you see after you are done.

(Keep in mind, that girls are more advanced than boys at that age, so my son serves as a how-early-can-a-kid-program upper bound of sorts.)

He was so excited that he wanted to do what I was doing. So, he’d place the arrows and then jump up or drop down.

Then we started getting creative. How about putting the arrows facing left or right and I jump to the left or to the right?

(And how about a couple of dinosaurs around to help us debug?)

There was not much action happening with only 3 arrows. He wanted to keep me jumping. Kids around that age understand numbers, so we introduced numbers into the mix and I told him that if he put the number 6 in front of an upward facing arrow, then I’d jump up 6 times.

We were 10-15 minutes into the game by then, and the game started looking like a real workout (physically for me and mentally for him).

At that point he was more interested in how numbers and arrows looked together in large quantities rather than the program itself. We called it a day. A good one indeed.

I hope we learned something useful today,

Last Sunday, I taught six kids of ages 5 to 7 how to program. “In what programming language?” you may ask. Well…I didn’t use a programming language, at least none that you know of. In fact, I didn’t even use a computer. Instead, I devised a game called “How To Train Your Robot”. Before I explain how the game works, let me tell my motivation.

I learned how to program during my freshman year at MIT when I was 19. It’s not because I didn’t have a computer at home or I hadn’t heard about programming languages. It was because (a) I thought programming was boring and (b) no one had told me why I should bother. In fact, my computer teacher in high school had told me “you don’t need to waste your time learning how to program. Now we have visual tools to build programs. Programming languages are already obsolete.” That was in 1994 and he was referring to Visual Basic. Luckily for me MIT wiped all that nonsense away in a matter of weeks. But does one need to wait to go to college to get the proper education?

Learning how to program is going to be the most useful new skill we can teach our kids today. More than ever our lives depend on how smart we are when we instruct computers. They hold our personal data and they make decisions for us. They communicate for us and they are gradually becoming an extension of our brains. If we don’t learn programming as part of our childhood, we will never evolve. As the famous futurist, Ray Kurzweil, put it “The only second language you should worry about your kids learning is programming.

How To Train Your Robot

The game works as follows: every kid is turned into a “robot master” and their mom or dad becomes their “robot”. I give each kid a “Robot Language Dictionary” and explain to them that this is the language their robot understands. The dictionary has symbols for “move left leg forward”, “turn left”, “grab”, “drop” etc.

The goal is for the robots to go through an obstacle course, pick up a ball and bring it back. The kids have to write a program that will tell the robot how to do all that. Every time they write a program, they hand it to their robot and the robot executes it. To do that, I give each kid a pen and paper where they copy symbols from the dictionary to write their programs and off their robots go!

The fun part begins when each robot retrieves the ball. Now I let kids invent their own moves and symbols that they add to their dictionary and then teach their robots. There is no limit to what the kids come up with.

This is my favorite program (written by a five year old girl):

I designed the class to teach some very basic principles of computer science and programming:

  • Programming languages are just another way to communicate to an entity (via programs).
  • Programs are recipes for automating stuff.

However, I was pleasantly surprised on how much more the kids learned. On their own they figured out the following things (in a 30-min session):

  • Program Parametrization: Instead of putting a forward step ten times, they put a 10 in front of the “step” symbol (A five-year-old figure it out and asked me if she could do it).
  • Composition: Grouping of a set of moves (“move left leg forward, then move right leg forward and do this combo 10 times”)
  • Abstraction: “Run in a circle, then say “I’m dizzy!” , then call this the “Run Dizzy” program and do it 100 times. (For some reason, kids loved making their parents repeat stuff 100 times over.)
  • Unit testing: They’d write a test program to get the parents moving a few steps, have their parents run it, then fix it and run it again, and then add a few more steps until they reach the goal.

I’ve ran the class twice now and I’ve seen the same patterns, which support my belief that when kids have fun, they get very smart and creative about programming. Many of the parents plan to play the game at birthday parties. If you have questions about how to set up the game, don’t hesitate to write. You can find my contact info at

You can also find instructions on how to teach the class as well as materials I used on this post.

I hope we learned something useful today,