The first computer program I ever wrote, in the second grade, was composed in pencil and ran on the platform known as my friend Nicholas. We were about to start learning Logo, the program that teaches kids how to draw things on the screen by writing out commands for a turtle. Before we got some face time with an Apple II, we had to act out the simple commands— Forward 10 steps, Left 90 degrees—in real life. I eventually succeeded in programming Nicholas to walk in a square.
Logo is the most memorable in a lineage of games that have tried to make programming fun and intuitive. I was reminded of it recently when I saw a demonstration of Kodu, a newly released video game from Microsoft aimed at the 9-and-over crowd. Kodu is light years beyond Logo, with modern 3-D graphics, a world players can landscape to their liking, and a cast of characters that isn't limited to the Terrapene genus. But the mission is pretty much the same: to place kids in an open-ended environment and arm them with a simple language that lets them build things. At the risk of blaspheming my youth, I dare say that Kodu is more fun than Logo. It's also a reminder that the mission of games like these is not actually to teach kids how to write code. It's to teach them how to think like programmers.
The first thing you should do in Kodu, before any of the programming stuff, is build a little world. To start with, you pave out a bit of earth and do some decorating, building mountains, digging holes, maybe filling a lake or two. Then you populate that world with trees, rocks, buildings, and other inanimate objects. Next come the characters. Among your options here are the eponymous Kodus, which look like porcine, floating submarines.
Once the props and characters are in place, you start composing rules for your denizens. This is where the learning begins. First, you choose what object or character (an apple, a Kodu, a rock) your new rule will affect. Next, you choose the situation that will prompt the rule to execute (a collision or a press of a button). Last, you dictate what the object in question should do when this situation occurs (run away, fire a missile, change color). All of this is done using on-screen, graphical menus—no writing required. The end result: a command like When something bumps into this tree, make the tree glow orange or When the Kodu sees a green apple, run away. (You can watch a video demo that shows all of this in action.)
Kodu offers enough different commands and characters that can be used to make games within the game. UFOs can be programmed to shoot missiles and dodge enemy combatants at the press of a button, accumulating points toward a "win condition" that ends the game when you reach a certain total. If you want to make a side-scrolling game like Super Mario Bros., you can alter the camera perspective. Equally satisfying, I found, was to build peaceful worlds that change and evolve according to my rules—a digital terrarium in which trees launch glowing fruit and little creatures mingle peacefully and multiply. As you build your world, it becomes increasingly likely you will get strange and unexpected results when all of your rules interact. In my first game, I unwittingly created a never-ending cascade of exploding apples as two of my trees perpetually provoked one another—a fantastic demonstration of the dangers of coding an infinite loop.