Intro Graphics, Fall 2005

Greg Humphreys


Logistics 5:00-6:15, Tuesday and Thursday, Olsson 005
Instructor Greg Humphreys (humper@cs.virginia.edu)
Office Hours: Tuesday Thursday 3-5, or by appointment
TA Ewen Cheslack-Postava (elc5d@virginia.edu)
Office Hours: Monday Wednesday 7-9, or by appointment
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.

Textbook coverOpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 2.0, Fsifth Edition
Lecture Schedule
  Date

Topic
(Click for slides)

Assignments
1 8/25 Introduction  
2 8/30 Raster Graphics and Color  
3 9/1 Image Processing and Sampling Warmup due
4 9/6 Image Warping, Compositing, and Morphing  
5 9/8 3D Rendering  
6 9/13 Ray Casting  
7 9/15 Local Illumination Image Processing due
8 9/20 Transformations  
9 9/22 Viewing, 3D Graphics Pipeline  
10 9/27 Clipping  
11 9/29 Scan Conversion: Lines, Circles, Fractals Raytracer due
12 10/4 Exam I (in class)  
13 10/6 No class  
14 10/11 Scan Conversion II: Polygons  
15 10/13 Texture Mapping Rubiks Cube due
16 10/18 Movie Time  
17 10/20 Programmable Graphics Hardware (Guest Lecture - Dave Luebke)  
18 10/25 Visibility  
19 10/27 Visibility (Continued) NPR due
20 11/1 Curved Lines  
21 11/3 Curved Surfaces  
22 11/8 Subdivision Surfaces  
23 11/10 Project Proposals Project Proposals due
24 11/15 Modeling Grab Bag  
25 11/17 Animation (Guest Lecture - Dave Brogan)  
26 11/29 Global Illumination  
27 12/1 Scalable Graphics and/or Review  
28 12/6 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).