Rendering Contest Image by Jeffrey Ames
Rendering Contest Image by Jeffrey Ames (first place)

About CS4620/4621 Computer Graphics I

Doug James, djames at
  ofc hrs Wed 11-noon in 5146 Upson

Ivaylo Boyadzhiev,  iboy at  (Ph.D. TA)
 ofc hrs  Thu 10:00am-11:00am in Upson 328B (after class)
Colin Ponce,  cponce at  (Ph.D. TA)
 ofc hrs  Fri 1:20PM-2:20PM in Upson 328B
Supasorn Suwajanakorn, (ugrad TA / CS4620 alum)
    ofc hrs  Mon 11:15am-12:15pm in Upson 328B
Nicolas Savva, (ugrad TA / CS4620 alum)
    ofc hrs  Sat 11am-Noon  in Upson 328B
James Miyamoto, (ugrad TA / CS4620 alum)
    ofc hrs  Tue 12:10pm-1:10pm  in Upson 328B

Staff List: cs4620-staff-l at  (the best way to ask Prof James & TAs questions)

Newsgroup: CIT maintains a newsgroup (cornell.class.cs4620) that can be accessed from Thunderbird can be used to set up and subscribe to different news groups. Students are welcome to use the newsgroup to communicate with one another, and ask questions of course staff who will do their best to monitor posts and respond to questions.

Time and place:
CS4620:  TTh 8:40–9:55,  Phillips Hall 219
CS4621:  Mon 2:30PM-3:20PM  (Room TBD)  (was Wed 3:35PM - 04:25PM in OLH 165)


Shirley & Marschner,
Fundamentals of Computer Graphics,
third edition

Supplemental books and materials:



You are responsible for learning the material by doing problems and textbook readings assigned in class---these are representative of prelim/exam problems.  We encourage you to work on problems alone or with your fellow classmates.  Questions about the homework can be asked in class, or during the professor's office hours, or the TA office hours.  Unlike previous years, there are no graded homeworks this offering. In summary, you are responsible for learning the material.

Programming assignments

There will be four programming assignments as part of CS4620:

  1. Hello World: An interactive virtual world rendered using the OpenGL fixed-function pipeline.
  2. Animation: TBD
  3. Pipeline: A software model of a modern programmable graphics processor, using vertex and fragment processing to achieve a variety of rendering effects.
  4. 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 using the framework code we'll provide, usually in Java (although some assignments may have C++ starter code). The CSUGLab in Upson 317 is set up to support this course (logins are currently being generated). 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 one in-class preliminary exam and a final exam:

The prelim will cover the first third of the course, whereas the final is comprehensive, so it covers all material from the whole course but with an emphasis on the latter part.  Exams will largely be similar to un-graded class homeworks, and textbook material and questions.

All 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.


In the optional practicum course, CS4621, you will get a more in-depth exposure to the course material by implementing a substantial piece of interactive graphics software. Students taking the practicum must attend the extra weekly lecture for CS4621, where the project and the background information required to implement it will be discussed. The practicum page on this site will be used for information specific to the practicum and can be ignored by students taking CS4620 but not CS4621.


Your final grade in CS4620 will be computed from the grades on the programming assignments and exams. The four programming assignments will account for 60% of the grade (15% each), and the two exams will acount for 40% (10%+30%).  There are no graded homeworks this year, however homework questions will be provided which are representative of the material that you will see on exams---although the exam questions will be more concise in some cases. 

Due dates and late assignments

Programming assignments are due at 11:59 pm on the due date and are accepted with a late penalty until 11:59 pm two days after the due date. Programs are accepted late as follows:
  1. Hand in by late deadline: one point off score
  2. Hand in within one week of due date: graded pass/fail.
  3. More than one 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.



The principle is that an assignment is an academic document, like a journal article with a computer implementation. When you turn it in, you are claiming 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 homeworks and projects among yourselves in general terms. But when it comes to writing up the homeworks or implementing the projects, you need to be working alone (or only with your partner if you are doing a project as a pair). In particular, it's never OK for you to see another student's homework writeup or another team's program code, and certainly never OK to copy parts of one person's or team's writeup, code, or results into another's, even if the general solution was worked out together.

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 solution (or even gives you the whole 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.

H1N1 Flu Preparedness 

In the event of a major campus emergency like an H1N1 flu outbreak, course requirements, deadlines, and grading percentages are subject to changes that may be necessitated by a revised semester calendar or other circumstances. Information about changes in this course will be announced on this website and via email.  Further policies are described on the Cornell H1N1 Website: