Categories
BlogSchmog Of Course Resources

World of Codecraft

This past fall, I had an opportunity to teach an undergraduate course in programming. The class—which was only the second exposure to programming for many of these students—centered around Processing, a layer on top of Java that is intended to help in information visualization and prototype design. While overall the class met a number of my goals, it came with many challenges.

Less Than Ideal

I got the gig just before the new semester began, which didn’t allow for much lead time in creating new material to match my approach to teaching. I wanted to emphasize how to approach understanding and implementing application development rather than trying to achieve expertise in this particular language. Since I was coding assignments, quizzes and exams from scratch each week, I managed to produce a few lemons that didn’t serve either learning or evaluation well. This included a final exam in which I greatly overestimated the ability of my students to make sense of complex code enough to debug and comment it, let alone enhance its features. There was also a revolving door of associate instructors in the first half of the semester that presented scheduling and continuity issues.

The class was much too big for a coding class, in my opinion, with 80-90 students taking this required course. The size prevented us from working together in front of computers and turned both projects and assignments into logistical nightmares as the instructors tried to give everyone enough support. Most importantly, the skills and interests among the students clearly divided them into two groups, each with quite different expectations for the course and abilities to pick up this material. Being a designer by training, I iterated throughout the semester, helping most but sacrificing the attention of some of the more gifted programmers in the class.

After the final grades were submitted, I started to work on a different way to structure the class that would address a few key needs:

  1. Emphasize both individual mastery of the language and social application development
  2. Allow students to work at their own pace
  3. Learning through explanation
  4. Reward participation

Gaming as a New Approach

In the first half of 2010, a class was taught using a gaming metaphor to determine grades. Indiana University Telecom professor Lee Sheldon tried this last spring for a course on multiplayer game design. Sheldon’s syllabus focuses on students earning experience points (XP) for “fighting monsters (Quizzes, Exams etc.), completing quests (Presentations of Games, Research etc.) and crafting (Personal Game Premises, Game Analysis Papers, Video Game Concept Document etc.).”

While I hadn’t seen the specifics of this syllabus until after I had prototyped my own course redesign, I was definitely inspired by the idea. There are some notable differences between my approach and one Sheldon implemented. The T366 class focused on multiple individual and group activities, but the end result appears to be a single point metric—XP—that increases with each student’s ability to master a particular task. My version of gaming-as-grading tried to value multiple resources and tie these elements together. For example, experience points may get you the leveling that translates to a letter grade, but students also have to manage “coin” and “honor” … each of which can be used to facilitate different activities. My course is also being designed to make it possible for a student to succeed while emphasizing or de-emphasizing group work. Finally, while the course has a regular meeting schedule (ideally, three one-hour sessions each week throughout the semester), the pace at which each person works is dictated by a combination of personal and social negotiations.

Course Dynamics for I211
A flowchart for the game dynamics of a programming course

My initial descriptions of the course structure can be downloaded as PDF

I’m anxious to try this method out, even as I’m aware I may never get a chance to do so (eventually, I need to graduate and move on). However, I think there is value in exploring game dynamics as a mechanism for both productivity and learning in the workplace, too. At the very least, I’ll consider my reflection on Fall 2010 complete.

What do you think?

UPDATE: I’ve also posted this on Quora.