Computer Graphics



- Schedule



Final Project
- 2007 Gallery

Lectures & Reading



Williams College

CS Dept

Graphics @ Williams


Instructor:McGuire TA:Bartley Tablante Lecture:MWF 10am Physics 207 Course:CSCI 371
Office Hours:schedule Unix Hours:schedule Lecture Lab:Th 2:35pm TCL 312b Sem:Spring 2007

Description: In this course, we explore the fundamental techniques for creating and manipulating digital images. These are the techniques underlying PhotoShop, PowerPoint, medical imaging, video games, and movie special effects. Course materal covers a broad range of topics including 3D graphics data structures and algorithms, programmable graphics hardware, image processing, and animation. Students will complete a series of programming projects cumulating in a realistic renderer for 3D scenes. (Image credit: Nick Chapman)

Format: Lectures and labs. Project Course.

Fulfills the Quantitative Reasoning requirement

Prerequisites: Computer Science 136 or equivalent programming experience, and Mathematics 211, or permission of the instructor.

Texbook: Real-Time Rendering, 2nd Edition by Akenine-Möller and Haines

Class/lab Participation15%
Exam (March 15)20%
Final Project20%

Work submitted late without permission will not be graded. However, you are automatically granted a 48-hour grace period on one programming assignment. Note that programming assignments are collaborative.


[Click here for the Assignment Schedule]

The weekly projects in the course this semester are more sophisticated than those in a typical introductory computer graphics class. To help you complete them (and the course) successfully, I'm structuring them in an unsusual way.

Each project begins with a non-programming homework assignment and concludes with a programming assignment. The homework, which is completed independently, should lead you to a deep understanding of the mathmatics involved in the project.

For the programming portion of the project you are encouraged to discuss program logic, design, and debugging practices with other students in the class. You may even work in a team with one other student and submit a single programming solution for both of you.

Programming is on your own time and not during scheduled lab sessions. You may use any computer that you wish. However, only the FreeBSD machines in the Unix lab will be officially supported. The TA will provide scheduled project lab coverage hours to help with C++ syntax and compiler errors. The TA will not help you with the assignments themselves.

All of the projects use the G3D library as unified, well-tested suport code base. Except where explicitly prohibited by the assignment, you can use any routine in the G3D library and look at any of its source code. You do not have to cite the library when used in your solutions.

For a project, you may also use any source code that you or any other student in the course has written for a previous project in the course. Some of the projects are cumulative, and this policy allows you to pick up from someone else's work if your solution had too many bugs to continue. When you use someone else's work you must first get their permission. When you use either your work or someone else's, you must clearly cite that work at the location where it is used and in a comment at the top of your main.cpp file.

The course is being taught in an experimental fashion this semester, with all-new lectures and projects. I designed the syllabus to be flexible. Based on your feedback I will adjust the project assignments and lecture schedule.

Application of the Honor Code:
Homework should represent your own work and may not be worked on collaboratively.

The only limitation on your conduct for programming work is that, except as described above, all of the source code for your solution must be written solely by your team members. Note that this is a more liberal policy than the default CS department policy for projects.

Experimental Labs

Scheduled "experimental labs" are graded only on participation and involve no programming. You will use lenses, cameras, lasers, and other optical elements to study illumination phenomena in the real world. Some lab periods are field trips to view films and works of art that motivate specific computer graphics problems.

Final Project

The final project is three weeks long. You will propose your own goal and work on it alone or with a partner. I will evaluate your project at four milestones: proposal, design review, code review, and presentation. Presentations will be in the style of a miniature symposium, to be scheduled during reading period at the class's convenience.


Fake Model Photography
Negative index of refraction