Computer Graphics
CS52 - Fall 2009
Instructor: Fabio Pellacini


Course Description

The Computer Graphics course will introduce students to the mathematical foundations of modeling and rendering (drawing) three-dimensional scenes. Topics include digital image representation, geometrical transformations, curves and surfaces, illumination and shading models, and visible surface algorithms. Coursework will consist of a mixture of written homeworks and short programming assignments.

If you would like to preview the content of the class, please look up the Winter 2008 webpage.


  • Fabio Pellacini (fabio -at- cs -dot- dartmouth -dot- edu)
    Sudikoff 153 | Office hours: M 2:00-3:00 pm
Teaching assistant
  • Jiawei Ou (jiawei -dot- ou -at- dartmouth -dot- edu)
    Sudikoff 143 | Office hours: W 2:00-3:00 pm
  • TuTh 2:00-3:50pm | Sudikoff 214
  • Xhour: W 4:15-5:05pm | Used sometimes for lectures
  • Strongly suggested: Shirley, Fundamentals of Computer Graphics



The class will have bi-weekly homeworks where you will be required to work out numerical problems or answer short questions. The schedule page will contain an up-to-date list of homeworks and due dates.

The homeworks will be due at the beginning of class on Thursdays, unless otherwise noted, with answers either printer or clearly written.

Programming assignments

The class will also require you to perform the following four programming assignments:

  • Raytracing I: Simple raytracer with shading and lighting
  • Surfaces and Transforms: surface tesselation and hierachical transformations
  • Animation: basic animation, skeletal animation, skinning
  • Raytracing II: large models and indirect illumination

You are to perform the assignments in Java using the basic code provided in class and email your results to, unless otherwise noted. Assignments are typically due at 11:59 pm of the due date.


Announcements and Help

Whenever necessary we will email last minute and important information.

There are two main ways to get help from us: office hours and email questions. In general you should feel free to email us with questions if short enough. We will do our best to answer you in a timely fashion. Otherwise please come to our office hours or schedule an appointment.

Grading, Late Assignments and Extra credit

The final grade will depend roughly on the homeworks (40%) and programming assignments (60%). We will also consider student participation in and out of class toward the final grade. This offering of the course has no midterm and final.

We will not accept late submissions for either homeworks or programming assignments. If handed in late, we will not consider the work toward your grade. Exception to this rule might be made for special cases only if the professor is informed way before the deadline and at his sole discretion.

In general there will be extra credit questions in either the homeworks and programming assignments. We will grade these separately and grant you extra credits only if the basic functionality has been successfully achieved (i.e. at least 90% of the original requirements/grade are met). Extra credit will not affect the grading curve and might not exceed 20% of the overall grade.

Disclaimer: The numerical percentages given before are only given to you to help you figure out how well you are doing in class during the year. We will have individual meetings during the class to review your progress.

Working Together and Academic Integrity

You are encouraged to talk to other students about the topics discussed in class as well as the homneworks/assignments in general terms. The goal is to get a deeper understanding of the material and the homeworks/assignments are meant for this.

Once it gets to preparing the final homework solution or the code for your program, you should only work by yourself. The solution you hand in is meant to indicate your own understanding of the problem and its solution. In particular you should not consult the solution or code of any other person when preparing your submission.

Furthermore, while you are welcome to use any source of information that can deepen your understandiung of the material, please do not include any code/solution in the assignment that is not yours. In particular, you are not allowed to use solution to either homework or programming assignment you might find that come from previous offerings of this course.