A Timeline of Alice

An overview of Carnegie Mellon University’s programming language

Catherine Rasgaitis
Nerd For Tech
8 min readApr 24, 2021

--

photo courtesy of Unsplash

Introduction to Alice

Alice is a visually based programming language designed to introduce younger students to the basics of object-oriented programming, also known as OOP. OOP is a type of programming based on objects and data instead of functions and logic.

Alice emerged as an educational programming language with great promise because of its appeal to younger audiences. However today, Alice has become increasingly less popular due to a lack of potential project genres and competing block-based languages.

History

The development of Alice was led by Computer Science Professor, Randy Pausch. Initially, Pausch began creating Alice at the University of Virginia. He hoped to build Alice as a virtual reality prototyping tool, available to programmers and non-programmers alike. By 1995, he had constructed a rough model of the Alice language with the help of his Stage 3 Research Group.

In 1999, Pausch discovered how Alice could be used as an educational tool for interacting with 3D graphics. To make programming less intimidating for Alice users, Pausch also decided to implement Alice’s drag-and-drop coding style. This block-based coding system effectively eliminated the challenges of following strict syntax rules that programmers would usually have to face. At this time, Pausch had also transferred from the University of Virginia to begin teaching at Carnegie Mellon University.

In the following years, Pausch and several Carnegie Mellon students developed new features to create more modern versions of Alice. By the early 2000s, Alice was clearly becoming a distinct educational platform for young programmers. Companion books, including Learning to Program with Alice, also allowed users to follow a coding curriculum.

Later, Carnegie Mellon student Caitlin Kelleher contributed another important feature to the Alice program, called Storytelling Alice. This version pushed for the incorporation of animation and storytelling, making the program far more engaging. Kelleher’s 3D characters and easy-to-follow storylines have continued to be some of the defining features of Alice today.

Another notable characteristic of Alice is its name. Alice was named in honor of Lewis Carroll, author of Alice’s Adventures in Wonderland and Through the Looking Glass. Carroll strongly believed in the importance of explaining and sharing complex ideas, especially to younger audiences. Carroll became an important inspiration, stirring Alice developers to make computer programming easy and enjoyable.

On a practical level, using the name of “Alice” and the theme of “Wonderland” presented other useful advantages. First, most of the artwork associated with the original Alice books are included in public domain. Thus, Alice developers can use this artwork in the Alice program to advance their goal of appealing to kids. Similarly, the name Alice is easy for children to remember, spell, and pronounce. Finally, the name also appears at the top of all alphabetically organized lists for programming languages.

The newest installment of Alice is Alice 3, which includes options for users to transition from block-based to text-based coding. Previously, with the block-based system, users could only view and interact with blocks. The improved Alice 3 allows users to view and edit Java text-based programming through the Alice NetBeans library plug-in. Alice 3 also has a more apparent object-oriented design and incorporates iconic characters and scenes from The Sims2.

At the moment, Carnegie Mellon students continue to work on maintaining and improving Alice. The Alice team is currently focusing on incorporating virtual reality into the program, as it was originally intended.

Benefits

Alice has numerous benefits because of its unique coding environment.

First, one of the key advantages of using Alice stems from its visual and block-based nature. Since Alice’s target audience includes new and younger programmers, dragging and dropping blocks is more attractive than writing text-based code from scratch. In this way, Alice users can focus more on problem-solving than using the proper Java syntax. Similarly, Alice’s block-based design means that programming will be less time-consuming, especially for slow typists.

The blocks in the Alice program themselves also offer a second advantage. Specifically, the commands in Alice’s blocks are more explicit and straightforward than traditional programming languages. For example, with Alice, to make an object turn around, you can use the block that reads “turn backward”. If you were to use Java turtle programming, you would need to type “this.turn(180)”. While both commands accomplish the same task, new programmers understand how to use Alice’s blocks more easily.

Alice’s workspace itself is straightforward, easy to navigate, and not overwhelmingly complicated for newcomers. When creating an Alice project, the user will focus on two main screens. One screen is designated for setting up the program’s “scenes” and the other screen is used for the actual programming.

Alice’s scene workspace has several built-in advantages, letting users select from a wide range of settings, objects, and characters. These objects can be further customized by changing their size, position, angle, and color. All these options enhance Alice’s graphics and visual appeal. Moreover, this system provides objects with default positions and effects for individual scenes. Consequently, users do not have to specify the values of each of these characteristics in their code. By contrast, with other languages, having to indicate all these characteristics can be time consuming and inefficient.

scene set up workspace

In the programming workspace, users create the code for each of the objects in the scene with a virtual “camera.” In this mode, users drag and drop customizable blocks from a list of procedures and functions. Alice also lets the user drag and drop additional blocks that allow for the creation of variables, loops, etc.

When a new block is added into the user’s code, Alice prompts the user to enter appropriate values. This is also helpful because it reminds the user to enter values when necessary and prevents errors.

In short, Alice has many advantages over other programming languages because of its straightforward application of blocks, workspace, and graphics.

Drawbacks

However, while Alice offers a variety of unusual benefits, Alice also presents a few challenges to its users.

The most obvious downside to learning Alice is that it is not a language that is used in professional software development. While Alice does teach underlying computer science concepts, expertise in the Alice language itself is not directly applicable to building and deploying a real-world product.

Similarly, having fluency in Alice is not easily transferrable to other text-based programming languages. Most programming languages do not have drag-and-drop features or block-based environments. These languages require a knowledge of proper programming syntax in the respective language. For example, moving from Java to C would be relatively easy because the Java and C syntaxes share certain characteristics. By contrast, an Alice expert would not have the necessary skills to write code from scratch and follow syntax rules. As a result, they would have a much more difficult time transferring their skills from Alice to C.

Another common issue with Alice is that it does not support .exe exports. A .exe file or “executable file” is a popular way to run software programs on a device. This can make it difficult to create standalone projects.

Next, while Alice is celebrated for its built-in characters, this feature also limits the creativity of the user. Alice prevents its users from creating objects and characters independently. With Alice, there is also no direct way to add original graphics created or imported by a user. When the novelty of the Alice program wears off, using the same group of characters easily becomes tedious and uninspiring.

Trends

Unfortunately for Alice users, the Alice language is gradually losing popularity. With other block-based languages like Scratch and Blockly, Alice’s features are no longer as impressive as they once were. Alice users are mostly limited to creating animations and stories and they cannot create more advanced projects like platformer games, physics engines, etc. that are possible with more modern languages.

For instance, Scratch, created by MIT, offers a wider range of programs that are not available with Alice. With Scratch, you can create more diverse projects because of its supplementary extensions and libraries. For example, Scratch includes note block extensions that allow users to make their own music. Pen extensions let Scratch users, called Scratchers, control a virtual pen that draws directly on the screen.

Other Scratch extensions that are not available on Alice include Makey-Makey boards and LEGO extensions that connect programming to the real world. You can also use video and motion sensing add-ons to control a camera and interact with your code. These tools allow Scratchers to build their own physical remote controls, something that Alice cannot achieve.

Scratch extensions

Scratch arguably continues to surpass Alice even in terms of graphics and visuals, some of Alice’s original selling points. Scratch has an even bigger library of characters to choose from. More importantly, Scratch offers users a choice to edit pre-made characters and create their own. These tools make Scratch more fun and exciting, better accomplishing the shared goal of making programming interesting for kids.

Beyond block-based languages though, more young programmers are learning to start text-based coding right away. This eliminates the need for Alice to serve as a transitional language for block-based programmers desiring to learn traditional languages.

Conclusion

In the past, Alice was a great way to explore computer science topics like object-oriented programming. It is also clear that Alice is meant more as an educational tool rather than a practical computing language. Today, Alice may no longer be as popular because of a plethora of more modern languages that are just as accessible. Still, Alice continues to make a significant impact to its remaining users and has been a key part of the movement to make programming more exciting for beginners. Its unique history, benefits, accomplishments and even its shortcomings continue to make it a noteworthy language.

“About Alice.” Alice, Alice, www.alice.org/about/.

“Alice 3 Released.” CMU, Carnegie Mellon University, www.cmu.edu/homepage/computing/2009/summer/alice-3-released.

Baldwin, Richard G. “Introduction to Alice Programming.” Developer.com, Developer.com, www.developer.com/java/introduction-to-alice-programming/.

Conners, Jaramy. “Get Started With the Alice Programming Language.” WhoIsHostingThis.com, WhoIsHostingThis, 12 Feb. 2019, www.whoishostingthis.com/resources/alice-programming/.

“Learning to Program with Alice.” Software Engineer Insider, Software Engineer Insider, www.softwareengineerinsider.com/programming-languages/alice.html.

--

--

Catherine Rasgaitis
Nerd For Tech

2x Top Writer — Space & Innovation | Enthusiast of all things tech and science!