« The Benefits of Using Paired Programming | Main | Congress Declares Computer Science Week! »

Looking at the Programming Language Options

It is interesting to follow the debate among college CS educators over time. At one point in the distant past, there was a large camp of CS teachers pushing for a breadth-first approach to intro CS, providing beginning students with an overview of the discipline before going full-out into programming. There are still some schools that follow this approach, but most teach programming as the first majors course (breadth is often "delegated" to a CS0, non-majors course). The choice of language is always a topic of feverish debate. Scheme has has been taught successfully at a number of schools and has many staunch supporters touting its strengths. In the past few years, there was talk about moving to scripting languages, particularly python, as an alternative to a full-featured object-oriented language. Related to this are a number of theme-based intro courses that have been developed, utilizing a central theme (e.g., robotics, multimedia, games). While all of these approaches can point to success stories, the fact remains that most intro CS courses in colleges are still focused on object-oriented programming, using either Java or C++.

The problem with teaching beginners using an industry-strength, object-oriented language is complexity. There is significant overhead involved in learning a language like Java, and all too often that means boring details - not inspiring applications. To address this problem, the latest trend in intro CS, as I see it, is the use of simplified environments as a way to introduce programming fundamentals while also engaging the interest/imagination of the student. Alice is no doubt the most popular example of this. A large number of intro CS courses at colleges start with Alice, introducing concepts such as classes & objects, loops and conditionals, etc. in a visual environment that can be fun and inspiring to students. From this foundation, students go on to learn Java or C++. Similar examples include Greenfoot, Jeroo, GameMaker, GridWorld, and Karel.

The environment that I am most excited about right now is Scratch. Scratch was developed at MIT as a tool for teaching programming concepts to students from K-12 all the way through college. It has a simple drag-and-drop programming interface (similar to Alice, although slightly more intuitive, in my opinion). Using Scratch, students can build 2-D animations or games very easily, and there is an amazing online community for support. The Scratch Web site (http://scratch.mit.edu) currently has more than half a million (!!!) projects uploaded, which can be viewed and sampled for free. In the first two weeks of my intro CS course, I introduced my students to Scratch and was able to cover all of the basic programming constructs (assignments, conditionals, loops, event-handling) and introduce object-oriented ideas (classes, objects, fields, methods). But most importantly, the students learned these concepts by exploring existing code and building their own animations and games. In the first week, they were able to program a choreographed dance animation, a Frogger game, and a slot machine simulation. In the second week, they designed and implemented their own animations and games.

Surprisingly, the 2-D nature of Scratch actually has some advantages over 3-D Alice. Using a built-in Paint editor, students can draw their own animation objects, or edit existing objects or photographs. The resulting animations/games look very much like Flash animations, which students are already familiar with through the Web. Sound is simple to add, be it sound effects, background music, or recorded snippets. And, the fact that students can upload their projects to share them with the world is very motivating.

If you haven't done so already, check out Scratch!

Dave Reed
CSTA Board of Directors


I really appreciate Dave's post, and as a member of the Alice team, I can say that we are big fans of Scratch. Scratch gets a lot of things right. We believe that both programs address somewhat different audience's and problems, and we believe that there is room for both in a good computer science curriculum. We are sorry that there is not more room for a good computer science curriculum in today's educational environment.

Although Alice does not have a built in model builder (3D models are hard to build after all), it does offer a "he-builder" and "she-builder" (in Alice 2.2) and a "Person builder" in Alice 3, that allows students to create a more personal humanoid model (Sims-based in Alice 3). Alice 2 also allows students to import 2D images (jpg, giff, bmp, tiff format) created in their paint program of choice, to be used as backdrops scenery, and texture maps on the 3D models. We have even seen student pictures brought in to replace the heads of Alice models (although it is a 2D image on a 3D model.)

Alice has always supported the use of sound, allowing students to import .wav and .mp3 files for exactly the same purposes as Scratch.

Scratch's online community is second to none, well worth emulating. Both Alice 2,2 and Alice 3 support the export of Alice worlds as Quicktime movies, allowing student projects to be viewed on Youtube, webpages, iPods, cell phones; any place Quicktime movies can be displayed. We are starting to see a number of Alice movies appear on Youtube.

But Alice has never been just an exciting piece of software. There are now multiple textbooks available for teaching Alice 2.2, and a deep wealth of instructional materials available for teachers at http://www.aliceprogramming.net. (Contact Steve Cooper at Stephen Cooper for login/password information for access) These resources include syllabi, lecture notes, projects and sample solutions, demonstration worlds, sample exams, test banks and solutions.

We have always understood that no matter how great the tool is, most teachers do not have time to develop completely new curriculum from the beginning. These materials were developed with NSF funding, and so can be used by anyone. They are password protected in attempt to keep solutions from students. ;-)

I would be happy to answer any questions anyone might have. You may contact me, Don Slater, dslater@cmu.edu.

Thanks, Dave, for a great post.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)