Intro Graphics, Fall 2004

Greg Humphreys

Logistics 5:00-6:15, Tuesday and Thursday, Olsson 005
Instructor Greg Humphreys (
Office Hours: Friday 2-4, or by appointment
TA Nathan Hoobler
Office Hours: 11-12:30 Tuesday/Thursday
Discussion Click here for online discussion forums related to this course
Description This course teaches the fundamental mathematics, algorithms, techniques, and programming skills for 2D and 3D graphics. Students will be well prepared to take any of our advanced courses in computer graphics.

This is not a course in the use of graphics software such as Photoshop or Maya. Rather, the course will teach the underpinnings of those programs. Although students will use OpenGL in this course, the focus will be on the underlying mechanisms of OpenGL rather than its sophisticated use.

Facilities Students should use the machines in Small Hall. All of these machines are running Windows XP with the latest version of Microsoft's development environment. We can provide you with a copy of Visual Studio .NET for your home use at no charge. Although OpenGL code tends to be very portable, your assignments will be graded on the Windows platform. Your code must build on this platform, else it will not be graded.
Prerequisites This course requires substantial programming effort. This course will require you to learn new APIs from books and online resources, and write non-trivial programs from scratch (e.g., no skeleton code).

In addition, lectures will make frequent use of basic concepts from linear algebra (vectors and matrices), geometry, trigonometry, and calculus (integral and differential). You should be comfortable with these concepts.


There are a number of followup courses to this one if you are interested in computer graphics.

CS440: Computer Graphics for Film Production covers the special effects industry, with a focus on compositing, effects, and production pipelines. Students produce their own short film incorporating computer-generated imagery.

CS446: Real Time Rendering covers modern practice in interactive computer graphics, with a focus on video game engine design and programmable graphics hardware.

CS447: Image Synthesis teaches the fundamentals of physically-based rendering. This is a mathematically intense course that focuses on the efficient simulation of the interaction of light with matter to create a photorealistic image.

CS448: Animation covers the acquisition and simulation of motion for producing convincing computer-generated animations.

CS551: Modern Research in Computer Graphics is a one-credit weekly reading seminar in which we discuss recent results in computer graphics research. Students are expected to present one paper from a recent conference, as well as discuss some of their own work. This course is open to students pursuing research in the computer graphics group.

Textbook coverOpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition
Lecture Schedule

(Click for slides)

1 9/2 Introduction  
2 9/7 Raster Graphics and Color  
3 9/9 Image Processing and Sampling Warmup due
4 9/14 Image Warping, Compositing, and Morphing  
5 9/16 3D Rendering  
6 9/21 Ray Casting  
7 9/23 Local Illumination Image Processing due
8 9/28 Transformations  
9 9/30 Viewing, 3D Graphics Pipeline  
10 10/5 Clipping  
11 10/7 Scan Conversion: Lines, Circles, Fractals Raytracer due
  10/12 Reading Holiday  
12 10/14 Exam I (in class)  
13 10/19 Scan Conversion II: Polygons  
14 10/21 Texture Mapping  
15 10/26 Visibility Rubiks Cube due
16 10/28 No class  
17 11/2 Programmable Graphics Hardware  
18 11/4 Movie Time  
19 11/9 Curved Lines NPR due
20 11/11 Curved Surfaces  
21 11/16 Subdivision Surfaces  
22 11/18 Modeling Grab Bag  
23 11/23 Project Proposals Project Proposals due
  11/25 Thanksgiving  
24 11/30 Global Illumination  
25 12/2 Animation  
26 12/7 Scalable Graphics and/or Review  
27 12/9 Exam II (in class)  
Grading Your final grade will be a weighted average of your performance on the assignments, exams, and final project. Assignments are worth 50%, the exams are worth 25%, and the project is 25%. However, you must turn in all assignments to pass the course.
Late Policy Assignments are due at the beginning of class. If an assignment is not turned in at 11:59 on the day it is due, it is considered one day late.

Assignments turned in one day late lose 33%, two days late lose another 33%, and after that the assignment is considered a zero.

However, each student has 5 late days to use at their own discretion over the course of the semester.  Each late day extends the due date by 24 hours.  If you submit an assignment after the due date, you must explicitly state the number of late days you wish to apply to the assignment.  With this flexibility built into the late policy, no other excuses will be accepted without a note from the Dean's office.  Note that late days are calendar days, not school days.  No exceptions for holidays or weekends.  Late days do not apply to examinations or to final projects.

Late days are designed to compensate for unforseen circumstances, such as unusual simultaneous course loads, network outages, disk drive crashes, vacations, scheduled family gatherings, and the like. Of course, you may use them as you see fit.

Honor Code The honor code applies to all work turned in for this course. In particular, all code and documentation should be entirely your own work. You may consult with other students about high-level design strategies related to programming assignments, but you many not copy code or use the structure or organization of another students program. Said another way, you may talk with one another about your programs, but you cannot ever look at another student's code nor let another student look at your own code for any reason.  You must write and debug your own code.

If you ever find yourself looking at another student's code for any reason, you are in violation of this policy (unless explicitly allowed).