Girls Ask Alice for Programming Skills

Opinion: Carnegie Mellon University's Alice is helping girls (and boys) learn to program using 3-D objects.

Girls, want to learn to program? Go ask Alice.

I dont mean to make any more reference to the Jefferson Airplane song, "White Rabbit," that made famous the line "Go ask Alice" than necessary, as its a sad tale of drug use. The Alice Im talking about is the Alice software for teaching students to program.

Alice is a Java-based, interactive program that enables users to create 3-D computer animations without the need for high-level programming skills.

Indeed, by simply working with a computer mouse, users can select characters, including dinosaurs, penguins, bugs, monkeys or faeries, and place them in an environment they choose, like an amusement park, a kitchen or even a country. With these pre-existing elements, the user can construct stories, outlining the actions of characters or objects using simple commands, like move, turn, or resize, rather than technical, sometimes confusing terms common in other graphics programs, like translate, rotate or scale.

Randy Pausch, professor of computer science and human computer interaction, as well as director of the Stage 3 Research lab at Carnegie Mellon University, began work on what was to become Alice in the early 1990s while at the University of Virginia. Pausch said Alice began as an easy-to-use scripting tool for building virtual worlds, a way of making computer graphics more accessible.

Yet, over time, Alice was transformed into a tool that used computer graphics to make computer programming more accessible as well, adopting a drag-and-drop interface that allowed users to construct stories from pre-existing graphic elements. And Professor Stephen Cooper at St. Josephs University and Professor Wanda Dann of Ithaca College helped out by developing educational materials to back up Alice.

/zimages/4/28571.gifTo read more about the current state of Computer Science, click here.

Along came Caitlin Kelleher, then a graduate student at CMU who had Pausch as her thesis adviser.

"As my thesis work, I created and evaluated a programming system for middle school girls called Storytelling Alice that presents programming as a means to the end of storytelling," Kelleher, now a post doctoral computer scientist at CMU, said in a description of her work.

Storytelling Alice includes high-level animations that enable users to program social interactions, a gallery of characters and scenery designed to spark story ideas, and a story-based tutorial, Kelleher said.

"To evaluate the impact of storytelling support on girls motivation and learning, I compared girls experiences using Storytelling Alice and a version of Alice without storytelling support (Generic Alice)," Kelleher wrote. "Results of the study suggest that girls are more motivated to learn programming using Storytelling Alice; study participants who used Storytelling Alice spent 42 percent more time programming and were more than three times as likely to sneak extra time to work on their programs as users of Generic Alice—16 percent of Generic Alice users and 51 percent of Storytelling Alice users snuck extra time."

In a separate paper on lessons learned during her efforts, Kelleher said, "Women are currently underrepresented in computer science. Studies have shown that middle school is a critical age, during which many girls turn away from scientific and mathematical pursuits, including computer science. By giving middle school girls a positive first programming experience, we may be able to increase girls participation in computer science."

CMU officials said Alice has been successful in teaching students at more than 60 colleges and universities, as well as a growing number of middle and high schools, to program. And not only has Alice been effective in getting girls interested in programming, it also has attracted minorities, as the program has been introduced into schools in the interior of cities such as Washington, D.C., CMU officials said.

Im huge on efforts like Alice and other projects to bring novices and newbies into the ranks of programming. Just as I think everybody has a book in them, I believe everybody has at least one good program in them. Im not saying Id be interested in reading all those books (or caring about all those programs), but I think about the boost in literacy that bringing more folks to reading and writing would bring. The same could be said for bringing more folks to programming.

Grady Booch, chief scientist for IBMs Rational division, mentioned Alice recently after he attended the Association for Computing Machinerys (ACM) Special Interest Group on Computer Science Educations (SIGCSE) 2007 symposium in Covington, Ken. Booch said Alice "really seems to be hitting its stride this year."

Check out Alice here. Alice is open source.

Meanwhile, in a similar vein Microsoft is targeting beginners with all sorts of opportunities, including a new Web site aimed at absolute beginners, as well as the software giants Express versions of its Visual Studio tools.

But at its recent MVP Summit, one Microsoft Most Valuable Professional indicated that Microsoft started targeting newbies a long time ago. Sources said the MVP got up and asked Microsoft Chairman Bill Gates if he would sign a copy of the documentation for the Altair BASIC interpreter that Microsoft delivered as its early product. The MVP said he was nine years old when his father taught him to program using the Altair and BASIC, and it launched him into a career in the field. Some say Bill seemed to get a little choked up.

The funny part is that the documentation included a line that said something like: If you have any problems with this software, call Bill Gates, Paul Allen" or a third person who helped with the software—probably Monte Davidoff, who wrote the floating point arithmetic for the interpreter. And it gave an Albuquerque, N.M., number to call.

I love that story.

/zimages/4/28571.gifCheck out eWEEK.coms for the latest news, reviews and analysis in programming environments and developer tools.