CMSC 23700
Introduction to Computer Graphics

General Information

Course: CMSC 23700
Introduction to Computer Graphics
Instructor: Gordon Kindlmann
TA: Ross Girshick
Lectures: Tuesday & Thursday 1:30pm -- 2:50pm
Ryerson 251
Labs: Thursday (not Wednesday) 4:30pm -- 5:50pm
Mac Lab (the Macs)
Office hours: 
Kindlmann (Ryerson 161-B): Tuesday 3pm-4pm & Friday 1pm-2pm
Girshick (MacLab in Regenstein): Tuesday 4pm-5pm
Mailing list: cmsc23700@mailman.cs.uchicago.edu
mailman.cs.uchicago.edu/mailman/listinfo/cmsc23700
Pheonixforge: web: https://phoenixforge.cs.uchicago.edu/projects/cmsc23700-win-2012
svn: https://phoenixforge.cs.uchicago.edu/svn/cmsc23700-win-2012

Overview

This course aims to provide an introduction to the basic concepts and techniques of 3D computer graphics, with a focus on interactive rendering techniques, such as those found in computer games. These include: coordinate systems and transformations, surface appearance and shading, geometric modeling, level-of-detail, and efficiently using graphics hardware.

The course covers mathematical and programming aspects. The lectures, homework assignments and exam will focus on the mathematical and algorithmic foundations of computer graphics, while the lab sessions and programming projects focus on implementing these with modern (shader-based) OpenGL.

The lab section is a required part of the course. You are responsible for the material presented in lab, and lab time will sometimes be used for project demos.

Reading Assignments

Assigned on: Finish by: Reading:
Tue Jan 3 Tue Jan 10 RTR Chapter 1, 2, 3;
OSB Chapter 1
Tue Jan 10 Tue Jan 17 RTR Chapter 4 minus 4.3, App. A minus eigenvalue/eigenvector;
OSB Chapter 2 minus OS-specific and GLUT-specific info
Tue Jan 17 Thu Jan 26 RTR Chapters 5 and 6
OSB Chapters 3 and 5
Tue Jan 31 Thu Feb 9 RTR: Skim 7.{1,2,3}, and Read 7.{4,5}, 8, 9.1
OSB: Chapters 6 and 7
Tue Feb 14 Tue Feb 21 RTR: Section 4.3
(re-read RTR: Sections 5.6 and 5.7)
RTR: Sections 16.{1,2}, 16.{5,6,7,8}
Tue Feb 28 Tue March 13 RTR: Section 13.1
OSB: Chapters 8 and 10

Labs

Homework Assignments

Assigned on: Due: Assignment:
Fri Jan 6 Noon Fri Jan 12 homework-01.pdf (Solutions on Chalk)
Fri Jan 26 Noon Tue Feb 7 homework-02.pdf (Solutions on Chalk)
Tue March 6 6pm Tue March 13 homework-03.pdf

Programming Projects

Assigned on: Due: Assignment:
Wed Jan 11 10:00pm Wed Jan 25 project-01.pdf
Thu Feb 2 6:00pm Fri Feb 17 project-02.pdf
Thu Feb 22 6:00pm Fri March 2 project-03.pdf

Handouts

Handouts distributed in class or online, possibly with revisions:

Date Handout
January 3 handout-01-courseinfo.pdf: Course information
January 16 handout-02-projections.pdf: Deriving View and Projection Transforms (file on Chalk in "Course Documents")
February 15 handout-03-slerp.pdf: Deriving Slerp (file on Chalk in "Course Documents")

Prerequisites

Trigonometry, linear algebra, and matrix operations (on 3x3 and 4x4 matrices) will be reviewed briskly; some familiarity with these will be important. You should be able to create and debug non-trivial C programs, as this skill will not be taught in lectures or labs.

Text books

There are two required texts:

Title: Real-time Rendering (3rd Edition) [called "RTR" in these pages]
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 SuperBible: Comprehensive Tutorial and Reference (5th Edition) [called "OSB" in these pages]
Authors: Richard S. Wright, Nicholas Haemel, Graham Sellers, Benjamin Lipchak
Publisher: Addison Wesley, 2011
Book web site:  http://www.starstonesoftware.com/OpenGL/

The programming assignments will be written using the C programming language. 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 requested that a copy of the Real-time Rendering text be placed on reserve in the Eckhart Library.

Grading

There will be homework assignments, programming projects, and a midterm exam (middle of February). The final project will be a group project (up to two-people per group). Grading will be based on following approximate weights:

Percentage Component
20% Homework assignments
30% Midterm Exam
50% Projects
The extent of your thoughtful class participation (asking and answering questions) will also be a factor.

Homeworks and programming projects will be posted on the class website and announced via email to the class list. Both will be handed in by you via pheonixforge.

Late programming projects will be docked 12% every 6 hours, in increments of 6 hours, based on the clock on the pheonixforge server. After 72 hours the project will receive a zero. There is no similar leniency with homework assignments. However, each student is allotted one 24-hour extension on one homework assignment or one individual programming project. You must request the extension at least 24 hours before the deadline.

Programming project grades will consist of a correctness portion (worth 75%) and a style portion (worth 25%). 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:

Though most topics covered in class are also described in the main text, class lectures and additional readings will also present required information. Slides from class will be made available on Chalk, but these will not be a substitute for taking notes in class (i.e. you need to come to class).

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 two-paragraph formal policy on Academic Honesty and Plagiarism, which you should read and understand.

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 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 slipperiness, 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.

Thanks to Stuart Kurtz and John Reppy for the above exposition of this essential information.