Saturday, March 28, 2009

Alice - Carnegie Mellon's Answer to CS


Using Alice to learn programming concepts

I did want to use one blog to discuss Alice. In my previous blog I touched on some of the good and bad elements that I discovered when our campus used Alice to teach our Programming Logic course. For those who are following this blog, I wanted to give you a firsthand experience using Alice and why it didn’t turn out so great for our students.

For many of my students, they enjoyed working with Alice. It is interactive and the graphics are amazing. Go to this site to get a quick demonstration of Alice and its capabilities:

Carnegie Mellon University
http://www.alice.org/index.php?page=what_is_alice/what_is_alice

Alice was designed and created at Carnegie Mellon University. In addition, Alice “is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web.”

The reason we initially chose it for our curriculum was for “Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.”

I will tell you that the 3-D effects are amazing and I can see why students are immediately drawn to this program.

The problem comes with the programming – or the lack of it. As you can see on the picture above, on the left side of the screen, you click and drag the commands you want to the textbox to the right. There are dozens of options to choose from and if you’ll notice carefully – the one object the program is currently listing is the sky. Not the skater or the ice or the sign – simply the sky itself. It’s easy to see why you can get passionate with the details. I believe this is where my students became overwhelmed with all the capabilities and options.

If you’ll glance at the bottom of the textbox you see the constructs – do in order, do together, if/else, etc…

I’ve been programming forever and in many different languages, but I know of no language that uses the command “do in order” or “do together”. Beginning students may “get” what that means, but when it does come down to syntax, they will see nothing of the sort – especially in C-based languages.

According to the Alice.org site, “In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation.”

The concept of drag-and-drop is nice in that students don’t get caught up in minute syntax details. In a C-based program, forgetting a ; (semicolon) can cause the program to not compile. That alone can get students very frustrated. The drag-and-drop alleviates that frustration. Really – the programmer doesn’t type much at all using Alice. Is that good thing?

Object-Oriented programming (OOP) can be very difficult for students to grasp. I’m for anything that will help with that learning curve and I believe Alice does help in that manner. You literally see how objects work independent of each other and how each object can complete its own task while another object is doing something completely different at the same time. Using the example above, the sky can do things independent of what the skater is doing which is very life-like in our world.

Also on Alice.org is a listing of schools that are currently using Alice. The site posted 1,334 schools. I’ve listed several top universities that use Alice as a tool in their programming curriculum.

University of Alabama at Birmingham:
http://www.cis.uab.edu/programs/alice-festival/

University of Michigan Engineering: http://www.engin.umich.edu/
(this is long so search for Alice)
There were many other top universities listed as well. In addition, there were many high schools and middle schools (even Alachua Elementary) was listed as well.


My conclusion:

As I stated in my previous post, our students found Alice to be both enticing and frustrating. The graphics were absolutely amazing, but it almost distracts from the reason we chose to use Alice – that is, to learn the programming constructs. Sequence, decisions and repetition are the basic constructs we need our students to grasp before heading into OOP and data structures. Instead students were playing with keeping what creatures would pop out of a tree instead of deciding if the ice skater should perform a jump.

Our department had used Karel-the-Robot to learn programming. It is simple and has the capability of using OOP. I may explore this on my next blog.

If you are using Alice in your curriculum, please let me know how it is going for you and your classes. I’d be very interested to know if there is a way to use Alice without all the bells and whistles for a beginning programming course. I believe syntax does have its place in programming so we might as well begin there, however, if using Alice or some other gaming-type curriculum will help them be initially interested, that may be the key to the whole concept here.

I will be researching other universities and what gaming devices they currently use in their programming curriculum.

2 comments:

  1. Debbie,

    This is a very thoughtful post, and you express well the double-edged sword of using an environment that removes the need to understand underlying code in order to make a program work.

    I'm making a rather simplified analogy, but it's a lot like the discussion people have regarding when to allow the use of calculators in a math curriculum. Ultimately, we want the students to know what's going on before we give them a tool that removes much of the grunt work. Or perhaps another analogy is the use of a program such as Dreamweaver: do we teach students to use the tool before we teach them the foundations of HTML?

    - Hap Aziz

    ReplyDelete
  2. Debbie,
    I went to the website and watched the video about Alice because the world of programming is completely unknown to me. Alice seems like a fun way to learn programming. The 3D graphics are great, very colorful and attention grabbing. You said that your kids got overwhelmed with the amount of details and options. Is there a simpler version? It would be nice to find a program with different levels of difficulty and details in which students start out with the basic and move to more advanced, each time an objective is met.

    I think that the fact that students do not have to type much in this program is a good thing because it is a beginning program, right? Not having to type right away probably makes it a little easier, and students are getting used to seeing how it looks before they actually have to type it themselves.

    Kelly

    ReplyDelete