Step 55: Gamify Computer Science

I apologize for the late post – I was sick yesterday and couldn’t finish this post in time.

I’ve been thinking about the idea of gamification and education. I was inspired by two episodes of Extra Credits, a vlog about video game design. The first video is about the separation between entertainment and education (or “edutainment”) games, and the former could still include “tangential education” elements. One good example is the Civilopedia (an in-game encyclopedia in the Civilization games), which explains the culture, technology, and people that exist in the games. Age of Empires II had a physical, multi-hundred-page manual that included the history of each of the units in the game. On the more explicitly educational side, I remember pouring over the “world almanac” that was included with Where in the World is Carmen Sandiego when I was younger. Although, I was also the kind of kid who spent his allowance on Encarta ’95… and spent days on the MindMaze trivia game.

These products start with a fun game and inserts education, but in colleges we go the other way – start with some concepts or skills that we want students to master, then motivate students to learn it. This is the second Extra Credits video, although many ideas are targeted at younger students who don’t mind more heavy-handed gamification such as skills and levels. Still, some ideas have entered college-level material. For example, providing students with immediate feedback is already pervasive in computer science, and is spreading to other subjects in the form of online courses. The interactive online textbooks from zyBooks takes it a little further, by displaying stars that light up when students complete an activity, bringing to mind games such as Angry Birds.

I’m not a gamer, and I don’t particularly like overt external reward systems, but four ideas from the video still jumped out:

  • One is simply the idea of framing progress in a different way. The video talked about grades that add up from 0 instead of being subtracted from 100. zyBooks uses stars, which is kind of corny, but my autograder actually uses the same idea, by including what I call the “scoreboard” that displays whether the last submission passed or failed each testcase. In theory, I am not giving more information than a number – “43/76 testcases passed” – but seeing each test turn red or green in real time has a psychological effect. I don’t remember if I’ve mentioned it before, but in the middle of the semester I was concerned by how much time students were spending on my assignments. I realized that students were not used to getting immediate feedback and got into an “okay, just one more try…” mindset. I’m ambivalent about this effect, since I don’t want students to neglect their other classes, but I won’t be changing the autograder for now.


  • Another idea, not as explicit in the video, is putting exercises in a narrative. The most recent example I can think of is the Advent of Code, a set of 25 exercises with a weak story about Santa and his elves. But I am slightly curious what happens to Santa, even though I know it is only the barest of a narrative. For computer science, I think the benefit here is not so much engagement/motivation, as it is demonstrating how computer science may be used in context, or perhaps as worked examples of how to represent real problems in code.
  • The third idea – the first of two that I’m more excited about – is unlockable content, or more generally the recognition of an “achievement”. The obvious reward here is extra credit, but there are likely other possibilities. For example, maybe if a narrative is involved, doing well in the assignment would unlock the ending to the story. If that sounds clichéd, what about unlocking real data on which students can test their code, ideally coming from that narrative? We can also talk about what triggers these achievements, which could range from passing the autograder on the first submission, to a testcase that reveals a bug in every student’s code. Most achievements will probably only be reached by a small number of students, but maybe with enough achievements at enough difficulty levels, every student will get at least one achievement.
  • The last idea is that of collective goals: rewards that depend on everyone in the class doing well. I am reminded of positive inter-dependence, which is the idea of structuring assignments so that members of a team must depend on each other for the whole team to succeed. Extra Credits talked about rewards depending on everyone in the class getting B’s on a test, but again we can generalize to other achievements. The important thing here is cooperation between students and incentivizing better students to help others who may be struggling. This past semester I had a 1% extra credit for “general helpfulness”, which I never assigned to anyone because it was near-impossible to assess. Collective goals have other problems – there will always be students who don’t help others but get the reward – but this may be a better motivation for students to help each other, or even to publicize those who are pro-social.

Again, I’m not a gamer, and in the past I have been generally against the idea of gamification, or offering external rewards in general. (Grades are also external rewards, and I’m also iffy about them, but that’s a whole different topic.) What I think is different about the ideas here is that they are not arbitrary rewards for acing a test or writing code. Okay, progress bars is sort of in this realm, but “rewarding” students with real-world data or motivating students to help others are valuable experiences in their own right. You might say that this is making explicit some of the periphery skills that computer scientists should have.

I think video games have gotten complex enough, and importantly there are enough examples of clever incentive mechanisms, that gamification is worth a second look. Of course, not everything in video games will transfer, and gamification can have its dark sides, but I suspect there are many ideas which could be usefully imported into education.

PS. Also, go watch Extra Credits. To start you off, here’s an episode about how one game forced players to think about racial representation.

Step 55: Gamify Computer Science

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s