CMSC 23700
Introduction to Computer Graphics

General Information

Course: CMSC 23700
Introduction to Computer Graphics
Instructor: John Reppy Ryerson 256
TA: Paolo Codenotti Ryerson 257a
Lecture: TR 1:30-2:50
Ry 251
Lab: W 4:30-5:50
Mac Lab
Office hours: 
Monday   10:00-11:00   Reppy Ryerson 256
Friday 1:00-2:00 Codenotti   Ry 257a
Mailing list: cmsc23700@mailman.cs.uchicago.edu
mailman.cs.uchicago.edu/mailman/listinfo/cmsc23700

Overview

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; geometric modeling; the graphics pipeline; level-of detail optimizations; and rendering techniques using programmable shaders.

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

There are two required texts:

Title: Real-time Rendering (3rd Edition)
Authors: Tomas Akenine-Möller, Eric Haines, and Naty Hoffman
Publisher: A.K. Peters Ltd., 2008
Book web site:  http://www.realtimerendering.com/
 
Title: OpenGL -- A Primer (3rd edition)
Author: Edward Angel
Publisher: Addison Wesley, 2008
Book web site:  http://www.cs.unm.edu/~angel/BOOK/PRIMER/THIRD_EDITION/

As an alternative to the OpenGL Primer, you might prefer a copy of

Title: OpenGL SuperBible (4th Edition)
Authors: Richard S. Wright, Benjamin Lipchak, and Nicholas Haemel
Publisher: Addison Wesley, 2007
Book web site:  http://www.starstonesoftware.com/OpenGL/

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
Errata: www.careferencemanual.com/errata.htm

We have also requested that a copy of the main text book be placed on reserve in the Eckhart Library. In addition, the following books will also be on reserve:

Title: Mathematics for 3D Game Programming & Computer Graphics (2nd Edition)
Author: Eric Lengyel
Publisher: Charles River Media, 2004
 
Title: Geometric tools for computer graphics
Author: Philip J. Schneider, David H. Eberly
Publisher: Charles River Media, 2004

Grading

Grading for the course will be based on:

Percentage Component
20% Homework assignments
30% Midterm Exam
50% Projects

The assignments will be posted on the class website. Homework assignments should be handed in at the beginning of class the day they are due. Programming projects will be automatically collected from your course gforge repository.

In general, late homework and programming assignments will not be accepted, but each student may have one 24-hour extension on one assignment or individual project. You must request the extension before the assignment is due.

Project grades will consist of a correctness portion (worth 70%) and a style portion (worth 30%). Your code must compile. Failure to compile will result in a 0 for the correctness portion of the grade.

Syllabus

The lectures are expected to cover the following topics:

Note that not all topics that we cover in class are covered in the main text.

Midterm exam

There will be a midterm on Wednesday, February 24 during the regulary scheduled lab (3:30-6pm). The midterm will be given in Stuart 101.

Homework assignments

There will be four or five 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
January 7, 2010 Homework 1 January 14
January 21, 2010 Homework 2 January 28
February 4, 2010 Homework 3 February 11
February 17, 2010 Homework 4 February 23

Projects

The course will require several programming projects. We believe that programming style is important, thus 30% of your project grade will be based on style and documentation of your code (the other 70% will be based on correctness). It is also important that your code compile successfully. Code that does not compile will not be graded on correctness.

Date Project Due date
January 12, 2010 Project 1: simple animation January 27
January 26, 2010 Project 2: per-pixel lighting [Revised January 31] February 3
Bump mapping with directional light
Bump+specular mapping with spotlight
February 5, 2010 Project 3: animation and shadows February 19
February 25, 2010 Project 4: Terrain rendering March 18,

We will use phoenixforge to manage project code and submissions. To create an account, login at

https://phoenixforge.cs.uchicago.edu/login

using your CS account and password.

Handouts

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

Date Handout
January 5 Course information
January 6 Lab tips
February 18 Note on Meshes

Sample code

demo.tgz
A simple demo of an OpenGL animation. This code illustrates the programming style and level of documentation that we expect.
The brick shaders
The vertex shander and fragment shader for the bricks example we discussed in class (including the OpenGL Shader Builder project).

Other sources of information

opengl.org
The OpenGL home page.
Apple's OpenGL page
This page has links to a number of useful resources for using OpenGL on Mac OS X.
The OpenGL 2.1 Manual pages
The GLUT Specification (html)
Features of the OpenGL Shading Language (pdf)
This document provides an overview of the major features of the OpenGL Shading language.
The OpenGL Shading Language Specification (pdf)
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 arithmetic
A useful guide to some of the issues that arise when computing with floating-point.
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.
GNU make manual
Doxygen manual
OpenGL Profiler User Guide
User guide for Apple's OpenGL Profiling tool. This tool is useful for debugging OpenGL applications, since it allows one to set breakpoints on OpenGL calls and to view the state of the OpenGL pipeline. There is also an overview of the tool here.
OpenGL Driver Monitor User Guide
User guide for Apple's OpenGL Monitoring tool.
Understanding Xcode Projects
This web page gives an overview of the structure of Xcode projects. (Xcode is Apple's Integrated Development Environment.)

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: February 25, 2010.