Course Description

Video games are an increasingly important medium in terms of national use, cultural impact, and profitability. and a rapidly growing base of mainstream users, games are an exciting area of study. While we will not build commercial quality 3D video games, we will build 2D video games that can be played over the web. Designing, implementing, and documenting a complete video game within a small group is a major component of the course.

This course aims to be an introduction to the basic concepts of computer programming by building and designing video games. While the focus is on programming in Java as applied to video game development, the concepts covered are widely applicable across programming languages and applications. These concepts include loops, structured and object-oriented design, data structures, event-driven design, and user interface design.

This course is part of the Game2Know Focus Program and will be taught in one of Duke's Interactive Computer Classroom (ICC) in a workshop format and will require programming and other activities during class. These classwork activities will involve a short explanation by the professor, followed by students working problems on paper or the computer, possibly followed by a class discussion. Since this course will be taught in a workshop format instead of lectures, students will be required to read and/or prepare material in advance for each class period.

Many of the materials used in this course were developed by Jam Jenkins. He also wrote the initial version of the game engine, FANG, used in the course.

Required Background: This course is intended for non-majors and has no prerequisites.


The Computer Science department at Duke University aims to excel in education and research. To ensure that our courses fulfill student needs and expectations, you can submit comments about this course anonymously here. These comments will be read only by the Director of Undergraduate Studies for Teaching and Learning and the course staff.