In July, Google released Google App Inventor, intended to let people with no previous programming experience design applications for phones that use Android. The App Inventor project was led by Hal Abelson, an MIT Professor of Computer Science and Engineering, who spent a sabbatical year at Google as a visiting professor. Instead of having to write traditional computer code, users of App Inventor can create programs by snapping together virtual, color-coded instruction "blocks." For instance, to add a button to an application, the user would drag the button block into App Inventor's workspace window and determine the button's visual properties by selecting from pull-down menus. Then, to determine what the button will do, the user would snap a block that defines a function -- like emitting a noise, or making a phone call, or changing the screen's background color -- into the button block.
The App Inventor blocks are based on the MIT master's thesis of Ricarose Roque, for which she built a general version of a programming interface that Eric Klopfer, the director of MIT's Teacher Education Program, had developed for a simulation program called StarLogo. StarLogo, in turn, began as the PhD thesis of Mitchel Resnick, who heads MIT's Media Arts and Sciences Program, and whose graduate advisors were Abelson and Seymour Papert.
Papert, who came to MIT in 1963, is most famous for inventing Logo, a simple computer language designed to introduce children to the principles of programming. Initially, programs written in Logo would guide a robot with a pen attached to its undercarriage -- a "turtle" -- across a sheet of paper, executing a drawing. In the late 1960s, when Abelson was a graduate student at MIT, he helped Papert begin testing the system in Boston-area schools.
"You really have to try hard to get into the mindset of that time, because a computer in those days was something that cost several million dollars," Abelson says. "And the idea that you would take the most advanced computing research equipment around anywhere, and you would let fifth graders … start playing with it, it was just mind boggling. For the first 10 years of that, people just thought we were nuts."
But that changed in the 1980s, Abelson says, when personal computers started invading elementary- and secondary-school classrooms. Many of today's software-company executives first learned the principles of programming from a later version of Logo, in which a virtual turtle executed drawings on a computer screen.
Resnick's PhD thesis was an extension of Logo called StarLogo, which enabled the interaction of hundreds or even thousands of turtles in complex simulated environments. "I was particularly interested in issues around emergent phenomena and decentralized systems," Resnick says. "How do bird flocks work? How do the individual actions of individual birds lead to the behavior of a flock? Or how do ant colonies work? Or how do traffic jams form? Or how do market economies work, where there's lots of individual buyers and sellers, but you get these larger-scale patterns that develop? I was interested in helping people understand how large-scale patterns arise from lots of local interactions. That's always been a very difficult thing for people to understand. So the idea was to try to provide a way for people to play with those ideas by giving very simple rules to lots of individual objects."
After graduating, Resnick became a professor in the MIT Media Lab, where he began developing a Logo-like system that would allow children to program robots built from Lego bricks with electromechanically activated moving parts. The project ultimately resulted in Lego's Mindstorms kits. But along the way, an undergraduate named Andy Begel, who's now at Microsoft Research, developed a graphical programming language -- a precursor to the App Inventor's programming blocks -- as a way to let kids program their Lego robots more intuitively.
Begel's system influenced the software for Mindstorms, and Resnick and Klopfer have continued to expand on its central ideas, for two different projects. Klopfer's is a 3-D adaptation of StarLogo called StarLogo TNG, which can be used to build video games, among other things. Resnick's is Scratch, a successful educational system, launched in 2007, that allows children to design their own interactive stories and games for the Web. "We've been able to stay in touch about what's going on, and we're now having a chance to revisit what we were doing and making version two of both of our projects," Klopfer says. "We made some different design decisions along the way, and I think that was really great as research projects, because we can really learn from each other's successes and failures."
For her master's thesis, Roque decoupled Klopfer's programming blocks from StarLogo, so that they could be reused in other software systems -- and indeed, they were the basis for the App Inventor programming interface. And because Scratch is so popular -- hundreds of thousands of registered users have used it create more than a million projects -- members of Resnick's group have been consulting with Google about how to build an online community around the system.
But beyond using actual code that was developed at MIT, Abelson says, the Google App Builder project was also motivated by the same philosophy that drove Papert's "nutty" experiments in the 1960s. "It strikes me that most of the people who are teaching introductory programming have gotten out of step with the reality of how kids experience computing," Abelson says. "It's not about sitting at a desktop computer. It's about these incredibly powerful computers that you now carry around with you that can do location-aware things, and they can find your friends, and they can make phone calls and do other stuff. App Inventor, as an educational program, is about giving young people who are trying to learn about computing power over the real computing that they're using in their lives."