Sunday, March 27, 2011

A curriculum for learning computer programming in WoW

(Updated: See note at bottom of post) What can you learn from the MMORPG World of Warcraft? A lot, it turns out. This is one of my conclusions from taking CMS.863J -- Computer Games and Simulations for Investigation and Education, taught by Eric Klopfer and Jason Haas. It's one of the classes offered this semester by MIT's Comparative Media Studies department, and is also cross-listed under Course 11 (MIT's Urban Studies department). Aside from myself and one other graduate student, all of the other people taking the class undergraduates, many in Course 6.

As indicated by the name of the class, the curriculum centers around computer games and educational theory relating to games and learning. However, like every other media and entrepreneurship-focused class I have taken at MIT, there is also a heavy focus on creating and building (Mens Et Manus is the institute's motto). In February, after getting up to level 13 in World of Warcraft and conducting quests with classmates in-world, we split into teams with the mission of building a sample curriculum around a specific topic area, using WoW as the learning environment.

A curriculum for learning computer programming in WoW
You may find it strange that a game like WoW can be used to study real-world topics, but there is actually a fairly long history of players using the virtual worlds to study or understand various phenomena. Edward Castronova's oft-cited 2001 paper on virtual world economies opened up a floodgate of research and academic discussion relating to massively multiplayer online games. Specific to World of Warcraft, the game has been used to study epidemiology, as well as topics related to learning. In 2008, a paper by Constance Steinkuehler and Sean Duncan in the Journal of Science Education and Technology studied scientific reasoning in thousands of WoW forum posts. They found that 86% of the posts contained "social knowledge construction," or "the collective development of understanding, often through joint problems solving and argumentation."

As expected, many of these posts consisted of discussions around certain classes of characters, spells, weapons, etc. However, 10% of the total posts studied used model-based reasoning, including mathematical models to explain some phenomenon. An example cited in the paper showed one player who apparently reverse-engineered damage algorithms in WoW to compare the abilities of priests vs. mages:

By intuition, you should notice a problem... but I’ll give you the numbers anyways 

For Mindflay, SW:P, and presumpably VT [3 priest spells]: Damage = (base_spell_damage + modifier * damage_ gear) * darkness * weaving * shadowform * misery 

For Frostbolt [mage spell] Average Damage = (base_spell_damage + (modifier + empowered frost) * damage_gear) * (1 * (1 - critrate - winter's chill - empowered frost) + (1.5 + ice shards) * (critrate + winter’s chill + empowered frost)) * piercing ice mindflay = (426 + 0.45 * dam) * 1.1 * 1.15 * 1.15 * 1.05
650.7 + 0.687 * dam 
frostbolt = (530 + (0.814 + 0.10)*dam) * ((1 - crit - 0.10 - 0.05) + (1.5 + 0.5) * (crit + 0.10 + 0.05)) * 1.06 
(530 + 0.914 * dam) * ((0.85 - crit) + 2 * (crit + 0.15)) * 1.06
0.968 * (dam + 579.7) * (crit + 1.15) 
Please notice the 0.687 versus the 0.968. That's the scaling factor. 

After students in our class had gotten the hang of WoW, there were discussions around how the game could be used to study trigonometry and group psychology. Our team, consisting of Andrew Hsiao and Michele Pratusevich (both course sixers) and myself, opted to use WoW as a platform for high school students to learn basic computer programming concepts, using a simple scripting language called Lua that can be run from within the WoW chatbox. Here's the curriculum that we developed:

Teaching Computer Science Through WoW Scripts

Michele and Andrew were the true domain experts here, and designed all four of the CS class exercises and most of the assessment. I concentrated on the introduction, theory section, and managed to create one of the assessment scripts (the simple currency exchange/variables exercise).

WoW computer programming curriculum review

I personally believe the curriculum we designed is a very effective and engaging method for introducing basic computer science concepts to high school students. Once they've established a WoW player account and learned some of the basic game functionality, it's so easy to experiment with the code, and try new functions from the WoW API. Our instructor said the curricula that the student group developed will be passed to testers at NYU, but I don't know if we'll get any feedback on how our CS curriculum fared. If you are a teacher and try it, or are a solo learner who wants to study basic computer science concepts while playing WoW, please feel free to give it a spin and let me know how it works.

My next assignment for CMS.863J, with a different group: Creating a board game to teach fundamental electrical engineering concepts. You can see our test board here, and I'll try to post more information about the project as development progresses in April.

Update: An NYU class has reviewed our curriculum. Their comments can be seen on the post, "A curriculum for programming, reviewed"


  1. Glad you're in the class and very interesting to read this post.

    RPG's are excellent learning tools. Indeed the whole MIT MBA program plays the Beer Game to kick off their schoolyear. And online just scales and spreads the goodness.

    Interestingly enough, just recently the Globe's Brainiac pointed to the seminal Oregon Trail simulation game --

    There's a lot of room for compelling innovation in this domain.


  2. Sounds interesting. You have to show me a demo in Muddy :-)


All comments will be reviewed before being published. Spam, off-topic or hateful comments will be removed.