Course: CMSC 23700 Introduction to Computer Graphics Instructor: John Reppy Ryerson 256 TA: Lamont Samuels Ryerson 176 Charisee Chiw Ryerson 176 Lecture: TR 1:30-2:50 Ry 251 Labs: W 3:30-4:50 (Lab 1) CSIL 1 W 5:00-6:20 (Lab 2) CSIL 1 Office hours:
Monday 10:00-11:00 Reppy Ryerson 256 Wednesday 1:00-3:00 Chiw Ryerson 176 Friday 1:00-2:00pm Reppy Ryerson 256
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 programmable graphics pipeline; level-of detail optimizations; and rendering techniques.
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.
There are two required texts:
Title: Mathematics for 3D Game Programming and Computer Graphics (3rd Edition) Author: Eric Lengyel Publisher: Cengage Learning PTR, 2011 Book web site: http://www.mathfor3dgameprogramming.com Title: OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition) Authorw: Graham Sellers, Richard Wright, and Nicholas Haemel Publisher: Addison Wesley, 2013 Book web site: http://www.openglsuperbible.com
The programming assignments will be written using the C++ programming language. If you are not familier with the language, you may want to pick up a copy of one of the following books:
Title: A Tour of C++ Authors: Stroustrup Publisher: Addison Wesley Title: C++ Primer (Fifth Edition) Authors: Lippman, Lajoie, and Moo Publisher: Addison Wesley
The Stroustrup text is a relatively short overview of the main features of C++, whereas the Lippman book is a detailed, and long (938 pages) description of the full language. Both books describe the latest version of C++ (the C++11 standard).
Grading for the course will be based on:
Percentage Component 20% Homework assignments (5) 30% Exams (2) 50% Projects (5)
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 phoenixforge 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.
Since late assignments are not accepted, the only way that you can get partial credit for a project that you fail to turn in on time is by committing your code to svn early and often. Be sure, however, to make sure that your code compiles (use comments or #ifdef to ellide broken code), since failure to compile results in a zero on the correctness portion of the grade.
The following is a tentative plan for what topics will be covered and when. Readings are denoted as "M3D" for Mathematics for 3D Game Programming and Computer Graphics and "SB" for the OpenGL SuperBible; page ranges are denoted in brackets.
Week | Lecture | Topics | Readings |
---|---|---|---|
1 | 1 | Evolution of graphics hardware; the graphics pipeline; programmable shaders | M3D:Ch1; SB:Ch1&3 |
2 | Linear algebra crash course: vectors and matrices | M3D:Ch2&3 | |
2 | 3 | Transformations; homogeneous coordinates | M3D:Ch4; SB:Ch4 |
4 | Geometry; parameterized vs. implicit representations; intersection testing. | MD3:Ch5.1-2,Ch6.1-2 | |
3 | 5 | Basic illumination, lighting, and shading | M3D:Ch7.1-4,7.6-7; SB12[504-544] |
6 | Advanced shading: texture maps, normal maps, and procedural texturing | M3D:Ch7.5,7.8 | |
4 | 7 | Projections: perspective vs. orthographic; view frustum | MD3:Ch5.3-5 |
8 | Character animation; key-frames; interpolation, quaternions | MD3:Ch4.6 | |
5 | 9 | ||
10 | Shadows | M3D:Ch10 | |
6 | 11 | More shadows; Blending | M3D:Ch10; SB:Ch9 |
12 | Deferred rendering; the G buffer | SB:Ch12[548-558] | |
7 | 13 | Representing objects as meshes; | M3D:Ch9.4-6 |
14 | Parametric surfaces; tessellation shading | M3D:Ch11;SB:Ch8[284-310] | |
8 | 15 | Scene-graphs; bounding volumes; collision detection | M3D:Ch12 |
16 | Accelerating rendering: view-frustum culling, spatial data structures | M3D:Ch8 | |
9 | 17 | LOD; impostors | |
18 | Physics-based animation | MD3:Ch15.2 | |
10 | 19 | GPGPU |
Note that not all topics that we cover in class are covered by the texts.
There will be five written homework assignments over the course of the term. Assignments will typically be posted here on Wednesdays and be due at the beginning of class on Thursday the following week. Late homework will not be accepted for credit.
Date Assignment Due date January 8, 2014 Homework 1 January 16 (in class) January 22, 2014 Homework 2 January 30 (in class) February 6, 2014 Homework 3 February 13 (in class) February 24, 2014 Homework 4 March 4 (in class)
The course will require several programming projects. The projects will be coded in a subset of C++ using the OpenGL 4.1 core profile and the GLFW library (version 3.0.4). This platform is supported by the CSIL Macs, which are running Mac OS X 10.9 (Mavaricks).
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 13, 2014 Project 1: simple animation [Revised January 19] January 24 (10pm) January 29, 2014 Project 2: texturing February 3 February 11, 2014 Project 3: animation and shadows February 24 February 26, 2014 Project 4: terrain rendering (part 1) March 10 March 7, 2014 Project 5: terrain rendering (part 2) March 18,
We will use phoenixforge to manage project code and submissions. Your class repository is accessible at
where CNETID is your personal CNet ID (i.e., you uchicago.edu email address). You can also login to phoenixforge.cs.uchicago.edu using your CNet ID and password.
The following is a list of supplemental documents for topics not covered by the texts. As necessary, we will post revisions here.
Date Document February 21 Note on Meshes March 4 Compositing Digital Images by Thomas Porter and Tom Duff
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: March 7, 2014