User:Anh B. Nguyen/sandbox/Alice (Education Tool)

Alice (Education Tool)

Overview: Alice is an open-source object-based educational programming language with an integrated development environment (IDE). Alice uses a drag and drop environment to create computer animations using 3D models. The software was developed first at University of Virginia in 1994, then Carnegie Mellon (from 1997), by a research group led by Randy Pausch. Alice is known as a fifth generation programming language, which means it is a program based on solving problems using constraints to the program instead of using constraints given by an algorithm written by a programmer

History: The concept of an educational programming language is not new. Back in the 80's, kids were using Logo to give commands to turtles. Some of today's software engineers remember the experience. Alice, though, has far more advanced capabilities. It also has a different history and set of predecessors. Alice has a basis in Python. One thing that differentiates Alice is that it is visual. When a student programs an object to do something, it does visually on the screen. And when it changes something, it can immediately see the effects of what it's changed. Alice removes variables that confuse students and allows them to focus first on the essentials. It’s not necessary to memorize code or even paste it in. Bits of code can actually be dragged into the correct place in the program. This alleviates some sources of error. Advocates argue that this is more like the world students know. Students may lose points for misplaced commas – and too many mistakes may mean not getting the scholarship or position – but a single misplaced comma won’t change the meaning of an essay or science report. Alice also allows for creation of 3-D animations and interactions without the need for as much advanced math. One of the testimonials on the Alice site is by someone who uses the language to prototype 3-D educational apps. Alice is sometimes taught to university students to help them understand what object-oriented programming is about. The goal of the Alice project is to change the first experience students have with computer programming. Removing unnecessary frustration and providing an environment in which beginning students, of both genders, can create programs they find compelling.

Features: The same concepts apply to data in a computer program. Data comes in a variety of different types that don't co-exist well in the same space. For example, Java recognizes eight different primitive data types as well as numerous abstract types. While Alice doesn't categorize data into that many different types, it does categorize data into the following types: number, Boolean, Object, etc. In Alice, there are four different types of control structures: Sequential – process the contained statements in order, concurrent – process the contained statements at the same time, conditional – process the contained statements if the outlined condition is met, repetition – process the contained statements repeatedly. Alice is conjoined with its IDE. There is no syntax to remember. However, it supports the full object-based programming, event driven model of programming. Alice is imperative, static typing and strongly typed. There are many other features in Alice that are not completely necessary to write a program, but they can make programs and stories more interesting to watch and create. Alice has many functions that can be helpful when creating a game. When creating a game, it can be particularly helpful if a player does not know what event will happen after another. Therefore, Alice's built in random number generator allows the creator to select a maximum and minimum number, after which Alice will generate numbers within that range. Also, Alice allows users to place hidden objects in the world, and allows them to be displayed when the programmer wishes for them to be displayed. Another unique feature of Alice is the creation of parameters and variables. Alice allows the user to create a parameter or variable and then saves it as an icon. Therefore, when the variable or parameter is used in the program, the user does not have to worry about misspelling or typing in the wrong name.

Some of the concepts that make the Alice language better for teaching than other languages are its lack of syntax errors, objects are available to import into program and come with a list of properties and command for that objects, and the material is organized. By removing typing and the ability to make a syntax error, Alice removes much of the initial frustration for new programmers. Also, the program is built-in with interactive tutorials that guide you through the process of programming with Alice. Included also, is a set of example programs so that a user can see not only the end result, but the code that was used to create the game or story as well. Just like Java, Alice also has properties of readability and writeability and such as indentation and spacing – makes the language easier to read, meaningful names – variables, methods classes must have names that mean something to the reader, simplicity – make the program as simple as possible, and conventions – standard naming, formatting, documentation. Alice’s reliability works even better since most of the frustrated errors are eliminated due to the fact that beginners have better experience learning how to program. The use of the drag-and-drop programming paradigm causes Alice to be much more accessible to beginning programming students than languages such as Java, C++, and C# that require extensive keyboard activity for use.

Example: Algorithm for Tower of Hanoi puzzle: Tower (num, source, target, spare)

If num == 1

Move the disk (the smallest one) from source to target

Otherwise

Recursively call Tower to move num-1 disks from source to spare

Move last disk from source to target

Recursively call Tower to move num-1 disks from spare to target