Hand In Hand Homeschool Consulting

Helping Maryland families
find the answers
they need along their
educational journey.

Classes
Resources
Calendar
Legal
Testing
Gifted
Home

Google

www.handinhandhomeschool.com
Entire Internet

Students and teachers save up to 80% on software!

Click here for your favorite eBay items

grow your online business

Show and Tell #15: Learning to Program with Alice

© 2005. Mark Engelberg

Many people consider computer programming to be a trade skill, much like the skills possessed by a plumber, electrician, carpenter, or others who use specialized knowledge to build things. In their view, computer programming is only worth knowing if you plan to pursue a career in programming.

Most computer science educators would disagree. At its core, programming is all about problem solving. And everyone can therefore benefit from some exposure to programming, with its emphasis on analyzing and breaking down complex problems into smaller problems that can more easily be solved, and then re-applied in other contexts. Furthermore, there’s no denying that computers have become an integral part of our society. These days, computer simulations are an essential tool for almost every mathematical and scientific discipline. Those with the power to extend existing computer tools and write new programs clearly have an advantage.

As a homeschooling parent with expertise in programming, I am often asked by other homeschooling parents, “What computer language should my kids learn?” This is certainly a legitimate question – some languages are better suited for first-time programmers than others. But often I get the impression that parents are asking this question because of their “programming as a trade skill” mindset. They really just want to know which programming language is currently most useful for a career in programming. What they don’t realize is that the programming language which is considered to be most trendy for business applications changes every 7-10 years. If any of our kids choose to become career programmers, they will almost certainly be using different languages and tools from those that currently dominate.

Here are the questions I’d really like to hear: “What are the skills that my child can hope to gain from programming, regardless of whether she becomes a professional programmer? What curriculum or textbook best supports the development of those skills? What curriculum is best for someone who has never shown any interest in programming? What curriculum is best for someone who is already programmatically inclined? And oh yeah, what computer language does that curriculum use, and why?”

My point here is that the actual computer language is far less important than the concepts taught, and the ease with which they are presented. As you can imagine, there are several excellent textbooks out there, and the best choice depends on your child’s age, interest level, and prior programming experience. I can’t possibly go into every possible option in this one article, so this week I’ll just describe Alice, a programming language / textbook combination that is on the cutting edge of computer science education for complete beginners.

The professors at Carnegie-Mellon University realized several years ago that if they wanted to give everyone a taste of programming, they had to figure out how to make it both fun and accessible. So they developed Alice, a system that gets students excited about programming by giving them the tools they need to develop interactive 3D movies. Alice is now taught at dozens of colleges as a first introduction to programming. These schools have seen a dramatic increase in the number of students who go on to take further computer programming classes. Female enrollment in computer science courses has also been boosted considerably since the introduction of Alice. Clearly, Alice has proven successful as an introduction to programming with broad appeal.

To create a 3D movie in Alice, the first thing you do is use the scene editor to create the initial scene, using backgrounds, characters, vehicles, and items chosen from Alice’s gallery of almost a thousand 3D objects.Alice intentionally provides no tools for creating your own 3D graphical objects, in order to keep the student’s focus on programming the movie, not the logistics of creating 3D shapes and artwork.

Once the scene is in place, you begin programming your “script” of how the objects behave and interact. Alice’s drag-and-drop programming interface is arguably its most innovative feature, inspired in part by the programming interface used in Squeak EToys (a programming system for kids that is worthy of its own article at some point in the future). Amazingly, writing a program in Alice requires virtually no typing. The program is assembled via the mouse as a sequence of instruction “tiles”.

This feature is crucial to Alice’s success as an introduction to programming. One of the most annoying things about programming is that computers are not very smart. The slightest misspelled or mis-capitalized variable name renders a program unintelligible to the computer. Beginning programmers in traditional programming languages make these sorts of mistakes frequently, and spend far too much time tracking down these simple syntactic “bugs”. Many students get frustrated that their program doesn’t work, and give up altogether. Because of Alice’s unique programming interface, it is impossible to make a syntactically incorrect program. Any program you make in Alice will work. It might not do what you want, but it will work. Because the task at hand is to write a 3D movie, if something doesn’t behave the way you expect, it is usually obvious what is wrong. For example, if a character moves backward instead of forward, you’ll know immediately what needs fixing.

Now, I must admit, I was initially skeptical when I saw Alice’s drag-and-drop programming interface. Most of the typing-free interfaces I’ve seen for programming have a number of limitations, and don’t let you write programs with any degree of sophistication. But Alice is far superior to other similar efforts I have seen, offering a surprisingly full range of programming control constructs, object-oriented organization, recursion, and even tiles for controlling parallel versus sequential execution.

As your programming abilities become more advanced, you can add interactivity to your Alice movies by using “event handlers” to trigger certain sequences depending upon the user’s clicks or keystrokes. Add enough interactivity, and you can even construct your own 3D game, perhaps a flight simulator or even an arcade-style game.

And here’s the best part – Alice is available absolutely free as a download from alice.org. But where Alice really shines is if you buy the textbook written by the creators of Alice, called Learning to Program with Alice . It’s available for about $45. That may seem like a lot of money, but when I got it and realized that there were full color screenshots on just about every page, I was amazed it didn’t cost even more. As a bonus, the book comes with a CD-ROM containing Alice and the 3D object gallery. This may be useful for those who lack a broadband connection to the Internet, and therefore can’t easily download the program.

The textbook uses Alice to introduce programming concepts in a carefully planned sequence. The emphasis is on the problem-solving and design process. Keeping with the movie paradigm, an analogy is made between program design and “storyboarding” a movie. Very quickly, you are able to create simple programs/movies. Gradually, you learn that you can create more complex programs/movies by breaking down the problem into simpler parts. For example, if you want to create a movie that begins with a bunch of sailors rowing toward an island, the first step is to write a short program (called a “method”) which explains how one sailor does a single rowing motion. Then, once this is in place, it is easy to extend this rowing motion to all the sailors, for as long as is needed.

Although it’s hard for me to judge precisely (because my own kids are on the young side), I’d estimate that the Learning to Program with Alice book is suitable for self-study by high schoolers and highly motivated middle schoolers. Even younger kids can potentially learn a lot from Alice with the help of a mentor. My 7-year-old son would not have been able to read the textbook on his own, but now that I’ve taught him about Alice, he’s able to program movies in Alice by himself.

For those who don’t want to buy the book, it is certainly possible to use Alice without it.Alice comes with an interactive tutorial that is quite good at introducing the interface for constructing scenes and creating programs. But beyond the tutorial, Alice comes with no other documentation, so without the book, you’d have to discover a lot by experimentation.

Of all the educational programming environments I have seen, Alice is one of the simplest, and least intimidating, while providing ample scope for learning and growth. I wholeheartedly recommend it as a first exposure to programming.

© 2006
Hand In Hand Homeschool Consulting.
Contact Us ~ Submit a Listing ~ Last Updated 1/13/06