Intro Graphics, Fall 2004
Logistics  5:006:15, Tuesday and Thursday, Olsson 005  
Instructor  Greg Humphreys (humper@cs.virginia.edu) Office Hours: Friday 24, or by appointment 

TA  Nathan Hoobler Office Hours: 1112: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 nontrivial 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. 

Followups  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 computergenerated 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 physicallybased 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 computergenerated animations. CS551: Modern Research in Computer Graphics is a onecredit 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  OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition  
Lecture Schedule 


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 highlevel 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). 