CS465: Computer Graphics I—Fall 2005


9 December: The prelims and their answers have been posted. You can find them on the exams page.

9 December: For the exam week, only Prof. Marschner and Adam will be holding office hours and Adam is moving his Tuesday office hours from 6:00 - 7:00 to 1:00 - 2:00.

29 November: Theo is holding extra office hours in Rhodes 551 from 1 - 2 tomorrow.

2 November: Adam is cancelling his office hours tomorrow and instead will be holding an extra help session for the Modeler assignment from 6:00 to 7:00 PM in Rhodes 551.

31 October: Homework 5 solutions posted.

18 October: Andrew is changing his office hours from MW 6:00-7:00 to the weekend SS 3:00-4:00. His first weekend hours will start this coming weekend and he will not be holding hours on Wednesday.

13 October: The web page is finally working again!

7 October: Masato has changed his office hours from MF 7:00-8:00 to M 11:00-1:00. He will be not be holding hours today and will start his new hours after fall break. Additionally for the break, there will be no office hours on Monday and Tuesday.

3 October: The 3rd programming assignment is posted. Because the regularly scheduled date for the help session for this assignment would fall during break, the help session for this assignment will be held Thursday, October 13 at 6:00PM in Rhodes 551.

1 October: If you have not done so already, you can pick up all old, graded homework and programming assignments in class after the lecture on Monday October 3rd.

30 September: The prelim on Tuesday October 4th will be held in Phillips Rm. 203 at 7:30.

14 September: Adam has changed his office hours. Adam will now be holding hours on Thursdays from 1:00 to 2:00 instead of his original hours from 3:00 to 4:00.

2 September: There is a conflict between the first prelim on October 4th and a prelim in PHYS 214. We have arranged alternate prelim times for those students in both courses. The PHYS 214 course will offer its prelim an hour and a half early at 6:00 - 7:30PM and we will move our prelim a half hour later from 8:00 - 9:30PM. If you have a conflict and you have not already contacted us, please mail Adam, arbree@cs.cornell.edu, and the PHYS 214 course staff as soon as possible so we will know who and how many will be taking the exam at the alternate time.

24 August: Welcome to CS465! Be sure to check this space regularly, because we'll use it for announcements you won't want to miss.

About CS465

Steve Marschner, srm@cs.cornell.edu
    Office hours: WF 3:30–4:30, 5159 Upson

Staff List, cs465-staff-l@lists.cs.cornell.edu
Adam Arbree (head TA), arbree@cs.cornell.edu
Andrew Butts, ajb64@cornell.edu
Theodore Chao, tc99@cornell.edu
Masato Ikura, mi46@cornell.edu

Time and place:
MWF 2:30–3:20, B11 Kimball

TA Hours held in PCG Conference Room Rhodes 551:
Adam Arbree: T 6:00-7:00, R 1:00-2:00
Andrew Butts: SS 3:00-4:00
Theodore Chao: MF 1:00-2:00
Masato Ikura: M 11:00-1:00

Help Sessions:
T 6:00 in Rhodes 453
Help sessions will be held at 6:00 on the Tuesday of the week after the Programming Assignments are handed out. They are designed to provide a forum for smaller group discussions in a less formal setting than class would allow. They will cover some of the basic lab tools, current programming assignments, and questions pertaining to any of the material covered in class. Attendance to these sessions is not required, as you are not required to use the lab, and we will only talk about material already presented in class. The scheduling of the help sessions is subject to change. If there is very high attendance additional help sessions may be scheduled but if the attendence is very low the help sessions may be discontinued in favor of extended office hours.

Shirley, Fundamentals of Computer Graphics, second edition (required)
Foley et al., Computer Graphics: Principles and Practice (supplementary)



There will be (usually) weekly homeworks, due in class on Fridays, consisting of one or two problems. See the schedule for the exact due dates. They will involve things like working out numerical or other short answers (which should always be backed up by some brief reasoning), answering "why" questions, and drawing graphs or other pictures.

The homweworks may be handwritten or printed and are to be turned in at the beginning of class.

Programming assignments

There will be five programming assignments:

  1. Ray I: A very simple ray tracing renderer that renders spheres and triangles using a perspective camera, point light sources with shadows, and basic surface materials.
  2. Resample: A program that dynamically scales an image to fit in a resizable window, exploring the speed/quality tradeoff using several different filtering techniques.
  3. Pipeline: A software model of a modern programmable graphics processor, using vertex and fragment processing to achieve a variety of rendering effects.
  4. Model: A simple modeling application that allows the user to create and transform simple objects and spline surfaces.
  5. Ray II: A more full-featured ray tracer than the first assignment that can handle larger models and do more advanced shading, including texture mapping and reflections in shiny surfaces.

These programs are to be done in teams of two. If you really want to work by yourself, that is OK but you will still have to do all the work. If you want to work with a partner but can't find one, please contact the course staff and we will help.

The programs must be written in Java using the framework code we'll provide. The CSUGLab in Rhodes 455 is set up to support this course. You are free to work on whatever computer you like, using any programming environment, but your code must compile and work using the basic command-line tools on the machines in our lab. You will hand in your source code using CMS.


There will be two evening prelims and a final exam:

Together the two prelims cover the first 2/3 of the course. The final is comprehensive, so it covers all material from the whole course.

All three exams are closed book, but you're allowed to bring one letter-sized piece of paper with writing on both sides, to avoid the need to memorize things.

After the fact, you can find the exams and solutions on the exams page.


Grading and late assignments

Your final grade will be computed from the grades on the assignments and exams. The homeworks will account for 30% of the grade, the programs will account for 30%, and the three exams will account for 40% (12% for each prelim and 16% for the final).

Homework assignments are due at the start of class on the due date (normally Friday), and are accepted with a late penalty until the start of the next class (normally Monday). Programming assignments are due at 11:59 pm on the due date (normally Tuesday) and are accepted with a late penalty until 11:59 pm two days after the due date (normally Thursday). The implications of handing in late for either kind of assignment are as follows:

  1. Hand in by late deadline: 10% off score (about 1 letter grade)
  2. Hand in within 1 week of due date: graded pass/fail; pass receives 50/100
  3. More than 1 week late: no credit

Assignments that are handed in under option 2 will not be graded carefully and may be returned very late. That option is just intended to give you a chance to reduce the effect of zeros averaged into your grade.

Extra credit

For the programming exercises you are welcome to implement extra features for extra credit. Don't expect large numbers of points—the idea is just to encourage you to have fun exploring the material in more depth.

Some ground rules:


The principle is that an assignment is an academic document, like a journal article. When you turn it in, you are implying that everything in it is your original idea (or is original to you and your partner, if you're handing in as a pair) unless you cite a source for it.

You are welcome (encouraged, even) to discuss the material of this class among yourselves in general terms. But when it comes to the details of the assignments, you need to be working alone. In particular, it's never OK for you to see another student's homework writeup or another team's program code, nor to discuss the solutions to the specific problems in the homeworks.

You're also welcome to read any published sources—books, articles, public web sites—that help you learn. If you find an idea in one of these sources that becomes part of your homework solution, that's fine, but it's imperative that you credit that fact on your homework or in a comment in your code. Otherwise you would be falsely claiming to have invented the idea yourself.

Academic Integrity

In this course we expect complete integrity from everyone. School can be stressful, and your coursework and other factors can put you under a lot of pressure, but that is never a reason for dishonesty. If you feel you can't complete the work on your own, come talk to the professor or the TAs, or your advisor, and we can help you figure out what to do. Think before you hand in!

Clear-cut cases of dishonesty will result in failing the course.

For more information see Cornell's Code of Academic Integrity.

Steve Marschner (srm@cs.cornell.edu)