Tuesday, June 30, 2009

Alice - a new way to learn programming

If you have done any programming papers, you'd know what I am talking about. The 'make it or break it' case eventuates when you do the first paper, if you find it hard you'll probably quit the major and choose something else.

Having done a major is programming, I at times wondered in my first year, why was I wasting my time, learning the rigid programming syntax. In the first semester of the major, I ended up programming a basic calculator and a wage calculator, it didn't make sense. Why was I reinventing the world? Not mentioning the boring moments I had to put up with almost everyday while working on the computer doing my assignments. You are stuck with a black screen (Borland C++) that had a miserable interface and very basic help library.

Black screen

The thought of quitting the major had crossed my mind so many times but I persevered and finished my major.

Teaching programming to year 12 and 13's would probably be the biggest challenge I faced quite early in my career. I did struggle at times and so did my students. Reflecting on my struggle while finishing my major, I could understand what my students were going through. The process of 'doing' and 'learning from it' was disjointed. The process fell apart because the students were not keen on 'doing' hence the latter never eventuated. Some of the reasons for not 'doing' - not fun, boring and nothing to conceptualise. I managed to work around some of these issues by making the class more game oriented and getting students to reflect at the end of every session. However the problem of teaching the rigid syntax or for students to remember these syntax always proved difficult. Somewhere down the line I discovered Alice, invented by the late Randy Pausch (watch his video: The Last Lecture).

Alice is a 3D platform for students to learn programming. Students learn the concept and logic for programming by controlling Alice and what she does inworld. The students can make her dance, walk, run, jump and many other complex maneuvers meaning rising the level every time and with it the need to learn complex programming skills. The immersive nature of Alice appears to have broken the barrier of 'not doing'. You are not just writing codes but you are actually getting Alice (Avatar) to do something. It's fun, it is easy (possibly because the pain of remembering the rigid syntax is outweighed by the enjoy students get out of using it) and best of all it works!

According to ScienceDialy a research done at Duke University, students were

  • highly engaged (unheard comments in a classroom like: ""'Oh, wow, look!' they told each other. 'Come here. Show me. Look at this!'" ). The students were creating stories with Alice.

  • keen on asking for more time to finish their work (students having spent 5-6 hours on Alice were still keen on continuing).

It also helped balance the male to female ratio in class, programming classes are mostly male dominated. It also created a very good platform for students hence the student turnover for the next class was good.

By the time I discovered Alice it was too late for my high school students but I had an opportunity to try it with my students in 2007. The feedback I received from my students were very similar to what's stated by Duke University. Students loved the fact that they actually created something, and that they could control what happened inworld. The understanding of key programming concepts became more apparent and easier to understand. I also noticed that students were highly engaged in the process and that they were willing to invest huge amount of time developing their world.

Second Life is another platform that could be used but has a steep learning curve. It maybe more suited at a university level. Second Life is more developed and has it's own scripting language (very similar to java) and is not free unlike Alice.