Computer Graphics
CS77 - Spring 2014
Instructor: Jonathan Denning


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 five short programming assignments.


  • Jonathan Denning (jdenning -at- cs -dot- dartmouth -dot- edu)
  • Office hours: Mo 10-11am, 2-3pm; We 10-11am, 2:30-3:30pm; or by appointment | Sudikoff 143/153
Teaching assistant
  • Tianlong Yun (tyun -at- cs -dot- dartmouth -dot- edu)
  • Office hours: Fr 3-5pm | Sudikoff 112/143
  • TuTh 2:00-3:50pm | Kemeny 008
  • Xhour: W 4:15-5:05pm | used sometimes for lectures, by announcement
Online Discussions
  • Strongly suggested: Shirley and Marschner, Fundamentals of Computer Graphics, Third Edition


The class will have (roughly) bi-weekly programming assignments:

  • Build: build C++ framework from source
  • Raytracing I: simple raytracer with shading and lighting
  • Surfaces and Transforms: surface tesselatino and hierachical transformations
  • Animation: basic animation, skeleton animation, skinning
  • Raytracing II: large models and indirect illumination
You are to perform the assignments in C++ using the basic code provided in class and submit your code and results via Blackboard, unless otherwise noted. Assignments are typically due at 11:59pm of the due date.


Announcements and Help

Whenever necessary we will email last minute and important information.

There are three main ways to get help from us: office hours, email questions, and posting online. In general you should feel free to email us with questions if short enough. We have set up course page on Piazza, an online discussion board. You may post your questions there. Note: see section below on Working Together. 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 on the programming assignments and student participation in and out of class. This offering of the course has no midterm and no final.

We will not accept late submissions for 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 well before the deadline, or in the case of a medical emergency, and at the professor's sole discretion.

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

Disclaimer: The numerical percentages given on class work 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 term to review your progress.

Graduate Credit

Students taking the course for graduate credit will be required to complete the extra credit portions of assignments as part of their normal grade. Grades will be averaged over the entire assignment including the extra credit portion. In other words, graduate credit replaces extra credit.

Working Together and Academic Integrity

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

Once it gets to preparing 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. This includes using Piazza or other online discussion forums.

Furthermore, while you are welcome to use any source of information that can deepen your understanding 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 a programming assignment you might find that come from previous offerings of this course or from the Internet.