CMSC 23700
Introduction to Computer Graphics

General Information

Course: CMSC 23700
Introduction to Computer Graphics
Instructor: John Reppy Hinds 033
TAs: David Press Hinds 026
Lecture: TR 1:30-2:50
Ry 251
Lab: W 3:30-5:50
Mac Lab
Office hours: 
Wednesday 10:00-12:00 Hinds 033
Friday 11:30-1:30 Hinds 026
Mailing list:


This course aims to provide an introduction to the basic concepts and techniques used in 3D computer graphics. The focus is on real-time rendering techniques, such as those found in computer games. These include: coordinate systems and transformations; the graphics pipeline; basic geometric algorithms; texture mapping; level-of detail optimizations; and shadows.

The course covers both the theory and practice of computer graphics. The lectures, homework assignments and exam will focus on the mathematical foundations of computer graphics, while while the lab sessions and programming projects deal with translating theory into practice.

Text books

The main text for the course is
Title: Mathematics for 3D Game Programming & Computer Graphics (2nd Edition)
Author: Eric Lengyel
Publisher: Charles River Media, 2004
Note that this is a different text from last year.

In addition, there are two supplementary texts. The first of these covers material that you will need to know for the programming projects.

Title: OpenGL -- A Primer (2nd edition)
Author: Edward Angel
Publisher: Addison Wesley, 2004
The programming assignments will be written using the C programming language (specifically, the C99 version). If you do not have a good C manual, we recommend the following:
Title: C -- A Reference Manual (5th Edition)
Authors: Samuel P. Harbison and Guy L. Steele Jr.
Publisher: Prentice Hall, 2002


Grading for the course will be based on:

Percentage Component
20% Homework assignments
30% Midterm Exam (Nov. 17)
50% Projects

Homework assignments

There will be homework assignments over the course of the term. Homework is due at the beginning of class and late homework will not be accepted for credit.
Date Assignment Due date
September 27 Homework 1 October 11
October 11 Homework 2 October 18
October 25 Homework 3 November 3
October 15 Homework 4 November 22


Project 0
Project-0 is a animation of balls bouncing in a box. It involves OpenGL lighting, an event-based simulation, and simple sphere-sphere and sphere-plane collision detection.
Project 1
Project 1 is a ray tracer. The project web pag has links to the handouts and sample test files.
Project 2
Project 2 is a terrain rendering system.


The following is a list of the handouts that have been distributed in class with links to PDF files. As necessary, we will post revisions here.

Date Handout
September 27 Handout 1 --- Course information
September 28 Handout 2 --- Lab notes
October 18 Handout 3 --- The GML Specification
October 18 Handout 4 --- Project 1 Overview
October 27 Handout 5 --- Notes on polygon meshes
September 28 Project 0 task description
October 19 Project 1(a) task description
October 26 Project 1(b) task description
November 15 Project 2(a) task description


The OpenGL home page.

Apple's AGL Reference Manual

This manual documents the OpenGL functions (as well as the Apple-specific AGL functions).

The GLUT Specification

The Omniverous Biped's FAQ's

This page is a collection of useful notes by Steve Baker on OpenGL and graphics programming. Of particular interest for this course are his notes on OpenGL lighting, Z-buffers, and matrices.

What every computer scientist should know about floating-point

A useful guide to some of the issues that arise when computing with floating-point.

OpenGL Tools for Serious Graphics Development

This article gives an overiew of the OpenGL tools that are available on the MacOS X platform.

Apple Technical Note TN2093

This technical note gives pointers on optimizing OpenGL performance on MacOS X systems.

Apple Technical Note TN2124

This techincal note describes various MacOS X specific debugging tools and techniques.

Understanding Xcode Projects

This web page gives an overview of the structure of Xcode projects.

Academic Honesty

The University of Chicago is a scholarly academic community. You need to both understand and internalize the ethics of our community. A good place to start is with the Cadet's Honor Code of the US Military Academy: "A Cadet will not lie, cheat, or steal, or tolerate those who do." It is important to understand that the notion of property that matters most to academics is ideas, and that to pass someone else's ideas off as your own is to lie, cheat, and steal.

The University has a formal policy on Academic Honesty, which is somewhat more verbose than West Point's. Even so, you should read and understand it.

We believe that student interactions are an important and useful means to mastery of the material. We recommend that you discuss the material in this class with other students, and that includes the homework assignments. So what is the boundary between acceptable collaboration and academic misconduct? First, while it is acceptable to discuss homework, it is not acceptable to turn in someone else's work as your own. When the time comes to write down your answer, you should write it down yourself from your own memory. Moreover, you should cite any material discussions, or written sources, e.g.,

Note: I discussed this exercise with Jane Smith.

The University's policy, for its relative length, says less than it should regarding the culpability of those who know of misconduct by others, but do not report it. An all too common case has been where one student has decided to "help" another student by giving them a copy of their assignment, only to have that other student copy it and turn it in. In such cases, we view both students as culpable and pursue disciplinary sanctions against both.

For the student collaborations, it can be a slippery slope that leads from sanctioned collaboration to outright misconduct. But for all the slipperyness, there is a clear line: present only your ideas as yours and attribute all others.

If you have any questions about what is or is not proper academic conduct, please ask your instructors.

Last revised: November 15, 2005.