Comp 600.460: Interactive Graphics and Games

Course Syllabus

Assignment 1
Assignment 2
Project 1
Project 2
Project 3


This course will examine real-time rendering of high-quality interactive graphics. Applications such as video games, simulators, and virtual reality have recently become capable of near cinematic-quality visuals at real-time rates. We will study the advances in graphics hardware and algorithms that are making this possible. Over several projects throughout the semester students will work in small teams to develop a small 3D game engine incorporating some state of the art techniques.  Examples of these techniques (and topics we will cover in class) include non-photorealistic rendering, occlusion culling, level of detail, terrain rendering, shadow generation, image-based rendering, and physical simulation.

A note of warning: Although the final project is to build a 3D game, this is not exactly a course about building video games: it is about building a 3D graphics engine such as sits under the hood of modern games. The course will be highly technical and a lot of work. We will not touch on many vital aspects of game design: character AI, the production process, artist tools, the network layer (for multiplayer or online games), interface design, multiplatform support, etc. In other words, don't take the class just because you like playing video games.

Students in this course should have previously taken COMP 600.457 - Computer Graphics, COMP 600.456 - Rendering Techniques, or the equivalent and have good programming skills. This level of experience is required to achieve a successful project in the allotted time.


Jonathan Cohen
Office Hours
(NEB 218-B)
by appointment


There is no required textbook for this course, but a number of useful texts are recommended. These are available from various online book vendors (Amazon, Barnes and Noble, etc.). I will also try to get them in the library on reserve ASAP. Much of our material will come from published research papers, which will generally be available to you online.

Real-Time Rendering (2nd edition) by Tomas Akenine-Moller and Eric Haines, AK Peters (2002).

This book is a significant update from the (excellent) first edition, and contains a great deal of additional material.  In particular there are new chapters on advanced shading techniques, shading capabilities of modern hardware, and so on. It is an excellent book that anybody serious about a career in computer graphics ought to own.  One of the best aspects of the book is the accompanying web site, a vast compendium of graphics resources that the authors keep very up-to-date. 

3D Game Engine Design by David H. Eberly, Morgan Kaufmann Publishers (2001).

This book makes excellent reading for programmers serious about writing their own game engine.  It is quite mathematical and not for the faint of heart.  It comes with a lot of free software, including some very useful little modules, also available from the accompanying web page.

Level of Detail for 3D Graphics by David Luebke, Marvin Reddy, Jonathan Cohen, Amitabh Varshney, Benjamin Watson, and Robert Heubner, Morgan Kaufmann Publishers (2002).

Line your professor's pockets while learning about level of detail, a crucial tool for real-time rendering.  Errata and links to code, models, and resources at the accompanying web page.

Game Programming Gems (series editor Mark Deloura).

There are three books in the series.  Some of the material from the first two might be a bit dated, but much of it is still very relevant.  Because these are about game design, they include non-graphics topics (e.g., character AI).  Each book is a collection of "gems", submitted by different game programmers.  Some are short useful code snippets, others are long involved packages or essays on different aspects of game programming.



The final grade will be calculated as a weighted average: Most individual assignments will be performed in the context of the group project by adding a feature to the game engine.  Students will work in small teams on the group project.  All team members will receive the same grade for the group project.  This is not negotiable.  Team members will also evaluate each other's performance; the "group participation" aspect of your grade will be largely informed by these peer evaluations.  Class participation means coming to class, participating in discussion, not falling asleep, and "demo duty".

I reserve the right to add a test, quiz, or "practicum exam".

Lateness Policy

I don't want people missing class in order to work on assignments that are due that day. Hence the policy: assignments are always due at the beginning of class on the due date. However, if you are in class on time that day, you get a free extension till 11:59 PM that night.  Assignments are due at 11:59 PM if there is no class that day.  Assignments one day late subtract 10%; two days late loses 30%. Two days (48 hours) after the due date, the assignment will be considered a zero.  Each student has up to five late days to use at his or her discretion for the individual assignments.  Each late day extends the due time by 24 hours.  Late days do not apply to group-wide deadlines.

Honor Code

Computer Science Academic Integrity Code

The strength of the university depends on academic and personal integrity. In your studies, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.

Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at any other solutions (including program code) to your homework problems or similar problems. However, you may discuss assignment specifications with others to be sure you understand what is required by the assignment.

If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated.

Falsifying program output of results is prohibited.

Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor or TA, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.

Students who cheat will suffer a serious course grade penalty in addition to being reported to university officials. You must abide by JHU's Ethics Code: report any violations you witness to the instructor. You may consult the associate dean of students and/or the chairman of the Ethics Board beforehand. For more information, see the guide on Academic Ethics for Undergraduates ( and the Ethics Board web site (

On-line Course Information

This syllabus is available on the world-wide web at:
This is the home page for a series of course web pages. Included in these web pages are the course schedule, lecture notes, homework information, etc. Check the pages early and often - I will try to keep the modification dates of the various pages up to date to help you track changes (I will also inform you of important changes during class or via e-mail). All lectures slides which I present using PowerPoint and the digital projector will be made available on the course web pages, so you don't have to copy them down (do take additional notes, however). Any material which I do not present electronically will probably not be made available electronically, but you will still be responsible for learning the content.

Credit Where Credit is Due

Much of this course is based on the Real-Time Rendering course by David Luebke at the University of Virginia (with his permission). It also serves as a next logical step in the development of my previous Virtual Worlds course with the same course number.

February 10, 2005