The joy of programming

Zap! Crash! Ding, ding, ding! Who knew that writing computer code could be this fun?

by Sarah Stall

Remember playing Asteroids at the arcade, and the satisfaction you got from obliterating all those boxy, intergalactic spaceships? Or how about the triumph of making it safely across the street in Frogger? Now imagine feeling that excited on the way to CSCI 161, “Introduction to Computer Science” and you’ll understand why Andrew Nierman’s Java Instructional Gaming Project is changing the way programming is taught.

“Students are really interested in gaming,” says Nierman, assistant professor of math and computer science, “and you can teach a lot of classic computer science concepts in a games course.”

That’s the premise for Nierman’s project with Scott Wallace of the University of Washington, Vancouver: a computer science curriculum that uses the trappings of video and computer games to introduce students to the joys and possibilities of programming.

The idea impressed the National Science Foundation enough that it awarded Nierman and Wallace nearly $150,000. The two-year grant will compensate student assistants for helping to test and develop a “game engine” and fund travel for the professors to give tutorials at conferences across the country.

The Java Instructional Gaming (JIG) Project is designed to provide students and their teachers with curricular modules to help incorporate game-related projects into traditional undergraduate computer science courses. The project also includes the JIG engine, basically a game-designing tool kit for creating and running computer games. The game engine operates as a jumping-off point, automatically providing simple programs common to all games so students can examine how one particular aspect, such as gravity or velocity, affects the games they design.

Built using Java, a language much easier to learn than the traditional gaming juggernaut C++, the JIG engine is accessible to beginners, including students coming from high school Advanced Placement programs, where Java is the programming language of choice.

“Students learn by doing,” says Nierman, so using a familiar language allows them to focus on one concept at a time. Complex subjects like algorithms, data sorting, and storing can be taught using JIG assignments without the additional burden of teaching a new, complicated language.

In a few hours with the JIG engine, even a first-year computer science student can write a game similar to Asteroids. Without the engine, the same task would take 10 times as long.

One of the goals of the project is to create a set of educational tools to support the use of the engine at small, resource-limited colleges and universities, so Nierman and Wallace have developed a database of 10 lesson plans professors at other schools can use in the classroom. Making the JIG engine available online as open-source software—where users can view, add to, and change the code—accomplishes another aim of the project: developing a community of educators who use and improve those tools.

This ability to see what’s happening “under the hood” is a critical component of computer science education. It allows students a glimpse into the minds of the engine’s creators. Nierman and Wallace hope other professors will improve the existing lesson plans and develop new ones, creating a collaborative environment so the project can grow.

“Nationwide computer science enrollments are down,” Nierman says. “I think we do have to market ourselves. Programming is fun—it’s just that not enough people know it.”