COMS 4160 : Computer Graphics

[Images courtesy Blue Sky Studios and Mike Defeo]

[intro] [instructor] [registration] [lecture] [prerequisites] [textbook] [notes&reading] [programming] [exams/grading] [schedule]


This course is an introduction to computer graphics -- a field that is unique in its combination of science, art, and engineering. Its focus is the generation and manipulation of visual content, and it provides the fundamental technology to an ever-increasing variety of media, including special effects and animation, interactive computer games and simulation, and graphical user interfaces. In this class we will discuss methods for synthesizing images in two and three dimensions, with an emphasis on "photorealistic rendering". We will also spend time looking at other applications, including those for interactive rendering as used in computer games.

To illustrate the material, we will use a combination of lectures, code walkthroughs, physical models, short films, and graphics & animation software. We will also have a few guests from the animation and research worlds. This will be a fun course, but will require the completion of some nontrivial homework as well -- it is expected that you have coding skills.


Michael Reed          
[  |  Home Page ]
office hours:
after class Thursday, or by appointment
Department of Computer Science
Columbia University
500 W. 120th Street, M.C. 0401
New York, New York 10027


Registrar Information

Course ID: W4160 [sometimes also called COMS4160], section 001

Registrar Call #: 67061

This course is 3 points.


Thursday, 6:10-8:00pm, room TBA.


In addition to programming proficiency in C++, the student should have a basic understanding of linear algebra and calculus.

Students without these qualifications, who still wish to participate, should speak to the instructor.


required: Fundamentals of Computer Graphics, 4th edition, by Peter Shirley et al. [A.K. Peters, 2016]

Additional material will be provided by the instructor.

Course Notes & Reading Assignments

All course notes (in pdf format) and homeworks will be put on the class wiki. If you are registered for this course, you should request a membership in that Wiki, or email me directly, as a significant amount of discussion will take place there. We will also be using CourseWorks for homework submission and grade distribution.

Programming Assignments

There will be six homework assignments, each of which will be mostly fullfilled by programming. Assignments are to be coded in C++; a framework will be provided, as well as an interface specification (i.e. the name of the functions to write, their arguments, and return values). The framework is so that you will not have to spend time on anything other than the relevant aspects of the problem, to provide a uniform set of tests on your implementation, and to make grading easier.

On Late Assignments: Assignments lose 10% each day they are late.

On Collaboration: Discussion of algorithms is encouraged, as well as the sharing of drawings and other representations of problems and the like. What is not permitted is the sharing or acquisition of code in any form. Any material from an outside source must be explicitly acknowledged



There is a written midterm and final exam, worth 10% and 20% of the grade, respectively. The exams are designed to be
relatively easy for those who have done the homework and understood the lectures.


Grades will be determined by a weighted average of the six homework assignments (%70), the midterm
exam (%10), and the final exam (%20).


NOTE: This schedule is for a previous semester; Spring 2016 will be similar.
The schedule is approximate and subject to change.


Title & Selected Topics
1       Introduction plus history, mathematical preliminaries
2       Images, displays, line and polygon drawing
animation appreciation
: "The Adventures of Andre & Wally B." (Pixar 1984)
3        Viewing & Transformations & "The Graphics Pipeline"
4       Geometry 1: polygon meshes & subdivision surfaces & OpenGL 1
animation appreciation : "Knick Knack" (Pixar 1986)
5       Geometry 2: parametric curves & surfaces
6 Ray Tracing 1
animation appreciation : "Stanley & Stella" (Symbolics 1987)
7       Illumination & Shading
8       Rasterization-based rendering
animation appreciation
: "Geri's Game" (Pixar 1997)
9       Midterm
: Mike Defeo, Master Sculptor at Blue Sky Studios
10     Aliasing & Antialiasing Special Topic: High Performance Computing on the GPU
animation appreciation : "Bunny" (Blue Sky 1998)
11     Ray Tracing 2
12     Textures & Materials
13     Animation & Simulation 1
animation appreciation
14     Miscellaneous Topics & Review
Finals Week Final Exam