COMS W4160 Computer Graphics

Spring 2020, Columbia University

TR, 5:40PM-6:55PM, 1127 Seeley W. Mudd Building

Instructor: Changxi Zheng


Hayun Chong (CA,
Mandeep Bhutani (CA,
Ziwei Zhu (CA,

Office Hours


(The lecture slides will be made availabe right before the lecture through courseworks.)
date topic reading assignments
21Jan Introduction    
23Jan Linear algebra Chap. 2 and 5 of [S&M]  
28Jan Geometric transformation Ridge regression paper assignment released
30Jan Geometric transformation Chap. 6 of [S&M]  
4Feb 3D Rotation and Quaternion    
6Feb Introduction and Demo of OpenGL    
11Feb Graphics Pipeline   PA1 is out
13Feb GSLS Shaders and Shading Models shader tutorial  
18Feb GSLS Shaders and Textures    
20Feb Mipmap Texture    
25Feb Mipmap Texture    
27Feb Ray Tracing    
3Mar Ray Tracing and Radiosity    
5Mar Rendering Equation    
10Mar Monte Carlo Integration    
12Mar Monte Carlo Sampling    
17Mar -----------    
19Mar -----------    
24Mar Monte Carlo Sampling    
26Mar Triangle Meshes    
31Mar Triangle Mesh Manipulation    
2Apr Forward Kinematics    
7Apr Interpolation and Spline Curves    
9Apr Inverse Kinematics    
14Apr Character Animation    
16Apr Interpolation of Quaternion    
21Apr Preliminary of Physics-based Simulation    
23Apr Color    
28Apr Guest Lecture    
30Apr Emerging Topics    

Projects and Work Load

The workload of this class starts with a paper homework with a few mathematical problems, followed by 4 programming assignment throughout the semester and a final exam. For the programming projects, you will be asked to implement some computer graphics algorithms. All programming assignment should be implmented in Java and will be submitted to courseworks.

The assignment handout has been released on Courseworks.
Due date: 10pm, Feb. 4 (Tue.)
Please submit electronically on Coureworks.
PA1 has been released on Courseworks.
Due date: 10pm, Feb. 22 (Sat.)
Please submit electronically on Coureworks.


There will be no mid-term in this course. But there will be a final exam.

Recommended Textbook

Shirley & Marschner,
Fundamentals of Computer Graphics
third edition

Supplemental books and materials:

Foundations of 3D Computer Graphics
first edition

About COMS W4160

Grading: Each homework to be graded will be scored on a 100-point scale. Your final grade will be a weighted average of the grades of the assignments and your final exam. The paper homeworks will account for 10% of the grade, the program assignments will account for 75% (PA1: 15%, PA2: 15%, PA3: 25%, PA4: 20%), and the final exam will account for 15%. The final exam will be closed book.

Due dates Paper homework should be handled in after the lecture on the due date. Programming assignments are due at 10:00 pm on the due date and are accepted with a late penalty. They must be submitted electronically, as detailed in the assignment handout.

Lateness policy: Late submissions lose 1% per 12 minutes of lateness. For example, a submission that is two hours late is penalized 10%, and a submission that is 20 hours late receives no credit. Rationale: Since some programming assignments are built on each other, we must ensure that all students begin each assignment at an equal playing field. By enforcing a strict lateness policy, we will be able to post next assignment shortly after the previous one is due, thereby enabling students to build on a solid foundation in the following week.
Plan ahead. The only exception to this policy is a documented medical emergency. In order to ensure fair grading, exceptions are not possible for holidays, sport meets, theater appearances, indigestion, etc. Plan ahead.

Questions, help, discussion: The instructors and IAs are available to answer questions, advise on projects, or just to discuss interesting topics related to the class at office hours and by appointment as needed. For electronic communication we are using Piazza (link also available at the top of this page). Please sign up for the Piazza page. When posting questions, please keep them organized by posting them to specific folders.

You are welcome (encouraged, even) to discuss the homeworks and projects among yourselves in general terms. But when you start writing up the homeworks or implementing the projects, you need to be working alone. In particular, it is never permitted for you to see another student's homework writeup or other's program code, and certainly never tolerated to copy parts of one person's writeup, code, or results into another's, even if the general solution was worked out together.

You're also encouraged 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 is imperative that you explicitly cite the source on your homework or state it in a comment of your code. Otherwise you would be falsely claiming to have invented the idea yourself.

Academic integrity: We expect complete integrity from everyone. We assume the work you hand in is your own, and the results you hand in are generated by your program. You're welcome to read whatever you want to learn what you need to do the work, but we do expect you to build your own implementations of the methods we are studying. If you're ever in doubt, just include a citation in your code or report indicating where some idea came from, whether it be a classmate, a web site, another piece of software, or anything—this always maintains your honesty, whether the source was used in a good way or not. The principle is that an assignment is an academic document, like a journal article. 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. 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.

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 IAs, 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 Columbia Engineering's Code of Academic Integrity.

Open Door Policy: We hope the course to run smoothly and enjoyably. Feel free to let us know if you find the course helpful and interesting. Especially, let us know sooner about the reverse. Drop by our office hours, leave us a note, or send us an email.