Alice 2.x
Alice 2.x is Carnegie Mellon University's drag-and-drop 3D programming environment, built to remove syntax errors from a beginner's first encounter with programming by letting them animate a virtual world instead of typing code.
Created by Randy Pausch and the Stage 3 Research Group at Carnegie Mellon University; later maintained by Wanda Dann, Dennis Cosgrove, Don Slater and the Alice Project
Alice 2.x is a free 3D programming environment from Carnegie Mellon University in which a student writes a program by dragging statement tiles into place and watching a virtual world move. It is the second generation of the Alice system begun by Randy Pausch, and it is built on a single diagnosis: that the thing standing between a beginner and their first working program is not logic, algorithms or abstraction, but the semicolon.
Alice 2 removes typing from the equation almost entirely. Statements are tiles. Parameters are dropdown menus. A tile can only be dropped where a value of its type is legal. There is no compiler error, because there is no text to get wrong. What remains - sequencing, parallelism, conditionals, loops, parameters, recursion, events - is the part the course is actually about.
History and Origins
Alice began in the early 1990s as a virtual-reality research project under Randy Pausch, first at the University of Virginia and then, from 1997, at Carnegie Mellon, where Pausch’s Stage 3 Research Group continued it. The original goal was rapid prototyping of VR worlds: the headsets and gloves eventually dropped away, and what was left was a desktop system for scripting interactive 3D scenes. That system, distributed as Alice 99, was scripted in Python and marketed as free, easy, interactive 3D graphics for the WWW, complete with a browser plug-in.
Around 1999 the project changed its purpose. Pausch had observed - repeatedly, in real classrooms - that novice programmers spent most of their frustration budget on syntax rather than on ideas. Alice 2 was the response. Copyright notices on every Alice 2 build to this day begin at 1999, and the alice.org front page of the early 2000s describes v2 as having been “completely rewritten from scratch over the last two years,” with a new stated focus: to provide the best possible first exposure to programming for students ranging from middle schoolers to college students.
That rewrite surfaced publicly as Alice v2.0b, headlining alice.org by January 2003 and accompanied by a community “BugFest” reportedly held on 21 January. It stayed in beta for a remarkably long time - the site kept re-dating v2.0b builds through 2003 and 2004 - and only shed the b in 2005, with a version 2.0 build dated 17 March 2005 and another on 5 April. Funding acknowledgements from the period name DARPA, Intel, Microsoft, the NSF and the Office of Naval Research, with Electronic Arts and Sun Microsystems joining later.
Pausch was diagnosed with pancreatic cancer in 2006 and delivered his “Last Lecture” at Carnegie Mellon on 18 September 2007, in which Alice was named explicitly as the work he hoped would outlive him. He died on 25 July 2008. Wanda Dann took over as director of the Alice Project, and development of the 2.x line continued under her, Dennis Cosgrove and Don Slater.
Design Philosophy
Syntax is not the lesson. The central claim of Alice 2 is that syntax errors are pedagogically worthless: they teach nothing about computing and cost beginners enormous time and confidence. The drag-and-drop editor makes most of them structurally impossible. Types are checked at the point of the drop, so a String cannot be dropped where a Number is expected - the interface simply will not allow it.
The program is visible. In a text language, the effect of a statement is an abstraction. In Alice, bunny.move(forward, 1 meter) makes a rabbit move forward one metre, on screen, immediately. A loop is a rabbit hopping four times. A bug is a rabbit walking through a wall. Debugging becomes observation rather than inference.
Concurrency is a first-class beginner concept. Alice 2 gives Do in order and Do together equal footing as block constructs. Making two arms swing simultaneously is as easy as making them swing one after the other - so parallelism is introduced in week one rather than in an operating-systems course.
Objects are concrete before they are abstract. In Alice 2 an object is a thing standing in a scene with visible parts and properties, and methods are written on it. The word “object” is grounded before it is generalised. The cost - deliberate at the time - is that Alice 2 is object-based rather than class-based: you add methods to an object and can save that object for reuse, but there is no user-visible class hierarchy and no inheritance. Restoring those was a principal motivation for Alice 3.
The animation is the reward. Alice worlds are stories, games and films. A student’s output is something they want to show someone, which is a different motivational structure from printing a number to a console.
Key Features
| Feature | In Alice 2 |
|---|---|
| Program construction | Drag-and-drop tiles into method bodies; a text script window backed by Jython is also available |
| Control flow | Do in order, Do together, If/Else, Loop, While, For all in order, For all together |
| Data | Number, Boolean, String, Object, plus 3D types such as Color, Direction and Sound; lists and arrays |
| Abstraction | World-level and object-level methods and functions, with parameters; recursion supported |
| Events | When the world starts, When a key is typed, When the mouse is clicked on something, While something is true, Let the arrow keys move subject |
| 3D | A scene editor with a large model gallery - several hundred objects in the full galleries - each with named subparts and built-in animations |
| Output | Run in a render window; export to movie via the Movie Maker |
A world-level method in Alice 2 reads, in the editor’s own rendering, roughly like this:
Do in order
bunny.hop times = 3
Do together
bunny.turn to face target = carrot
camera.move forward, 2 meters
If bunny is within 1 meter of carrot
bunny.say "Found it!"
Else
bunny.move toward carrot, 1 meter
Every one of those lines was assembled by dragging, not typing - the numbers and the string are the only things a student enters at the keyboard.
Underneath, Alice 2 is a Java application (its packages still live under edu.cmu.cs.stage3.alice), rendering through JOGL and embedding Jython to execute the underlying script representation of a world. That Jython layer is the visible descendant of Alice 99’s Python scripting, and it is why the 2.6 upgrade of Jython from 2.1 to 2.7.3 was a breaking change to the saved-world format.
Evolution
The 2.x line was maintained for more than two decades, mostly as careful housekeeping around a stable language:
- 2.0 (2003 beta, 2005 final) — the rewritten system, aimed squarely at introductory computing.
- 2.2 (from around 2008-2009) — the version most textbook editions were written against; the August 2011 build reportedly added a universal Mac binary compatible with OS X 10.7 Lion and worlds for the third edition of Learning to Program with Alice.
- 2.3 (5 August 2012) — Spanish display language, plus an in-application updater so that fixes no longer required a full reinstall. Point releases followed through 2.3.5 (2 August 2013).
- 2.4 (2014-2015) — a Core Gallery with downloadable full galleries, Brazilian Portuguese, Middle East models built by the Alice team in Qatar, and extended character-set support. 2.4.3 (1 June 2015) shipped for Windows, Mac and Linux.
- 2.5 (12 March 2018; 2.5.4 dated 13 March 2019) — largely a compatibility response to macOS High Sierra, which broke earlier builds. 2.5 was offered for Windows, Mac and Linux; 2.5.4 dropped the Linux build.
- 2.6.0 (September 2023) — the big one: Java 8 to 17, Jython 2.1 to 2.7.3, JOGL 2.3.2 to 2.4.0, a Mac build updated for current hardware and OS versions, and the Linux build restored. Backward compatibility of saved worlds was broken.
- 2.6.1 (31 January 2024) — right-to-left text for Arabic and Hebrew and high-DPI display fixes. Still the current release listed on alice.org; only 2.6.2 alpha and release-candidate builds have appeared since, on GitHub.
Meanwhile the project’s centre of gravity moved. Alice 3, announced with Sims 2 character assets contributed by Electronic Arts in February 2008 and released in beta on 13 August 2009, added genuine classes, inheritance and a side-by-side Java code view - the “mediated transfer” path from blocks to text that Alice 2 could not offer. Alice 3 has been the forward development line ever since; Alice 2 has been kept alive rather than advanced.
Current Relevance
Alice 2 remains downloadable from alice.org in English and Spanish gallery editions for Windows, macOS and Linux, and its source sits on GitHub under TheAliceProject/alice2. It is worth being precise about the licence: Alice 2 is free and source-available, but not open source in the OSI sense - the end-user licence permits binary redistribution for non-commercial purposes only, forbids derived products using the Alice name, and separately restricts the Garfield models licensed from Paws, Inc. to non-commercial educational use.
The version numbers tell an honest story. Roughly nine years separate the 2.4 line’s last real feature work (2014-2015) from 2.6.0’s 2023 platform rescue, and 2.6.0’s changelog is almost entirely a runtime upgrade. Alice 2 today is a maintained artefact: kept running for the institutions and curricula that still depend on it, while Alice 3 and, in the wider world, Scratch absorb new beginners. The block-based teaching idea Alice pioneered has thoroughly won; Alice 2 itself is no longer the vehicle carrying it.
Why It Matters
Alice 2 is one of the few teaching languages whose central hypothesis was stated clearly enough to be tested, and then actually tested. Pausch’s claim was that syntax is a barrier rather than a lesson. The Alice literature that followed - the reported Ithaca College and Saint Joseph’s University results on grades and retention among at-risk introductory students, Kelleher’s controlled comparison, in which middle-school girls given a story-shaped variant reportedly spent 42 percent more time programming than those given a generic build - turned a design intuition into an evidence base, and that evidence base is a direct ancestor of the modern consensus that beginners should start with blocks.
It also demonstrates the cost of getting one thing wrong. Alice 2’s object-based, class-free model was the right simplification for a first hour and the wrong one for a bridge to Java, and the entire Alice 3 project exists to fix it. That trade-off - how much of the real model to hide, and what it costs to un-hide it later - is still the central unsolved problem in introductory programming environment design.
And the environment is inseparable from the person. Pausch spent his last years pushing Alice into classrooms and named it, on 18 September 2007, as the thing he wanted to leave behind. Whatever else Alice 2 is technically, it is also a piece of software that a dying man asked the world to keep using, and that people at Carnegie Mellon have kept compiling for the better part of twenty years since.
Further Reading
- The Alice Project — official site, downloads and teaching materials
- Alice 2 downloads — current 2.6.1 builds and archived 2.5.4 and 2.4.3
- TheAliceProject/alice2 on GitHub — source, build instructions and release notes
- Kelleher, Pausch and Kiesler, “Storytelling Alice Motivates Middle School Girls To Learn Computer Programming” (CHI 2007)
- 30 Years Later, Alice is Still Teaching the World to Code — Carnegie Mellon Entertainment Technology Center
Timeline
Notable Uses & Legacy
US introductory computing courses
Alice 2 was written for the pre-CS1 and CS1 audience and reached it. In 2008 Carnegie Mellon stated that Alice 2.0 was in use in 10 to 15 percent of US colleges and universities - a self-reported figure, but a widely repeated one - plus a substantial number of high schools and middle schools: a rare case of a research-lab teaching tool becoming standard infrastructure across a national higher-education system.
The FBI Safe Online Surfing competition
In 2010 the FBI and Carnegie Mellon announced a national competition, part of the FBI's Safe Online Surfing internet-safety programme, in which middle and high school students produced 45-second animated public-service films written in Alice. The Alice teachers' mailing list carried calls for submissions in subsequent years, and the FBI's Safe Online Surfing programme itself continues to run.
Storytelling Alice and the CHI 2007 study
Caitlin Kelleher built Storytelling Alice on the Alice 2 codebase for her CMU doctoral work, adding story-oriented animations and a gallery aimed at middle-school girls. In her controlled comparison against a "Generic Alice" build, reported at CHI 2007 with Randy Pausch and Sara Kiesler, users of Storytelling Alice reportedly spent 42 percent more time programming than users of Generic Alice and were more than three times as likely to keep working past the end of the assigned session (51 percent versus 16 percent), with no reported difference in mastery of the underlying programming concepts. The comparison was between two builds of the same system given to middle-school girls in a study setting, not a benchmark against other teaching languages.
Textbook and curriculum publishing
Alice 2 supported a commercial textbook ecosystem unusual for an educational language: Learning to Program with Alice by Dann, Cooper and Pausch (Prentice Hall, through a third edition), Shelly Cashman's Alice 2.0: Introductory Concepts and Techniques, and a body of CMU-published lessons, sample syllabuses and test banks distributed free to teachers.
International classroom localisation
The Alice 2 line was localised well beyond English: a Spanish interface and gallery in 2.3 (2012), a Brazilian Portuguese interface and a Middle East model set built by the Alice team based in Qatar in 2.4.2 (2014), and right-to-left text support for Arabic and Hebrew as late as 2.6.1 (2024). The localisation work outlasted the software's mainstream US adoption.
Carnegie Mellon Building Virtual Worlds
Alice grew out of, and fed back into, Pausch's Building Virtual Worlds course and the Entertainment Technology Center he co-founded, where the point of the tool was to let students with no graphics-programming background stage an interactive 3D scene inside a two-week project cycle.