COMS 4162 Administrivia

Spring, 2006

Instructor: Ravi Ramamoorthi
CEPSR 610 (try 6LE4 if not in)
Office Hours: After class (MW 4-6pm)
TA: Akash Garg
212-939-7176 in case of emergency
Office Hours: Mon 1:30pm-2:30pm, Wed 1:30pm-2:30pm
For best results, follow this procedure if you have any questions.
  1. Come to the TA or Professor office hours.
  2. Post your question on the CS4162 Class Bulletin Board.
  3. Send email to the TA at The TA will only answer questions that are already posted on the class bboard, or are too specific to be of interest to other students.
  4. Send email to the professor. The TA response time is likely to be faster than the professor's.

COMS 4162: Advanced Computer Graphics

This course is a followon for COMS 4160: Computer Graphics. There is not much overlap in terms of material, but I will assume you are familiar with basic graphics concepts and math, are comfortable writing moderately large graphics programs, and have a strong interest in graphics. Ideally, I would like every student to take the full 4160-4162 sequence; I feel the full year is necessary to get a complete introduction to the field. This sequence could be crammed into a single semester (and this is in fact done at some universities), but the full year sequence provides for a more relaxed, though fairly demanding and thorough introduction.

We will mainly be covering topics we omitted in 4160, starting with image and signal processing, going on to more advanced geometric modeling and meshes, and finishing with rendering, focusing on Monte Carlo methods and ray tracing. OpenGL may be needed for some of the assignments but is much less important than in 4160. There will be a little more focus in the lectures on technical and mathematical details than in 4160. The course is intended to give you a complete introduction to the mathematical foundations of the field, as well as the programming methodologies and systems used.

Note that this course is geared as a follow on to the COMS 4160 course I taught in the fall. For those of you (primarily MS students) who took introductory graphics at other universities, there will likely be some parts of this course that you are already familiar with [and conversely some parts of 4160 you may not be that familiar with; however, it is almost certain you have covered the core material needed for 4162]. In this case, you are free to either relax during those parts and take it easy on the relevant assignments, or to go beyond the basic requirements of the assignment and do something more exciting. In any case, I think it should be a lot of fun, even if you have some familiarity with some of the parts.

Since you are taking the course, I assume you enjoyed 4160, or the equivalent elsewhere. This course will be fun too, but as in 4160 will require a significant amount of work. I don't think you should find it too difficult if you were able to handle 4160 well, and as in that case, the grading will be generous (perhaps more so here, since I will take into account that everyone taking this course is motivated and did well in 4160). Since this is a smaller group of students who are all motivated and interested in graphics, I expect everyone to do well and have fun.

The assignments in this course tend to be more open-ended than in 4160, and in some cases there may not be as complete a skeleton code as you would like. To avoid any problems, as usual, you should START EARLY on the assignments, and stay in contact with the instructor and TA if any problems arise.

Pre-requisites: COMS 4160 (or equivalent at another university for instance) and an interest in continuing to learn about graphics. If you are very motivated and willing to work very hard, you may be able to take this course without taking 4160, but you need to be very motivated and hardworking, and will be responsible for filling any gaps in your knowledge by reading up on the 4160 material on your own as the course progresses.

Note: For those of you who will still be at Columbia next year, and want to continue learning about graphics after finishing this course, there are a number of 6000-level courses offered every year. Also note COMS 4167 taught by Prof. Grinspun, which is often offered in the spring.


There are four projects, comprising primarily of programming, but also including a written component. You are allowed to (and should) work in groups of two on all parts of all the assignments (both programming and written). In general, the same rules as in 4160 apply (for this course, I will however allow you to work alone if you want to, but the requirements won't change, so you do so at your own risk). Groups of two need hand in only one assignment. In terms of collaboration, you can talk to people outside your group and consult outside sources, but must write up the written solutions and source code yourself without assistance. All of these assignments ask for a writeup or website, where you describe what you have done. In these cases, I expect you to be honest in terms of documenting what your program can and cannot do (this will make everyone's life simpler). In particular, all images etc. in your writeup should be generated by your final program unless explicitly stated otherwise. You do not need to have the same partners on all the assignments. There will be no exams or other tests in this course.

In general, this course may assume a little more maturity than in 4160. In particular, some of the later assignments may not be as fully specified with as much skeleton code. In these cases, you should make reasonable assumptions to implement the basic functionality required. Remember that many graphics programs are open-ended, and you will be building perhaps more interesting systems here, than at least assignments 1 and 2 in 4160. This is a chance to use your creativity and come up with really cool results.

Late Policy

In general, the assignments are fairly long, both in terms of work required and, correspondingly, in terms of the time given to complete them. They are also very incremental, and you should plan on doing some work every week (or even every day). Therefore, there really should be no reason to turn things in late barring truly exceptional personal circumstances (it would be better to simply turn in an 80% done assignment on time). The late policy we will use will be as follows:


Your final grades will be computed by weighting the assignments as follows. Please note that as mentioned before, the final letter grades assigned will be generously curved, bearing in mind that essentially all students taking this course did very well in 4160 or equivalent and are especially interested in graphics.

HW # Written Programming
0 10 0
1 25 50
2 25 50
3 25 50
4 0 65


Much of the material in this course will not follow any particular textbook. In those cases, we will try to be explicit in the lecture notes and assignments. You should retain the textbooks from 4160. The one reference you should definitely get for the course is

Computer Graphics: Principles and Practice

by Foley, van Dam, Feiner and Hughes

This is widely regarded as the bible of computer graphics, and is a comprehensive text that we will be referring to. At some level, it is optional, since the assignments will follow course notes. However, if you do intend to continue in graphics, this textbook is certainly well worth having.

Lecture schedule and assignment due dates

The homework will generally be due by midnight on the day following what is listed here. Thus, Homework 0 is actually due by 11:59 pm on Thursday, Jan 19 and so on.

In addition to the lectures and regular office hours, we may schedule more formal review sessions once for each unit of the course as in 4160, to make sure students are on track with their projects, and address any issues that may arise. Also please note that while you may work on the homeworks during spring break, class support from the instructor and TA might be less.



Due Related Reading
Jan 18 Overview of Course Assignment 0
Jan 23 Basic Preliminaries, Quantization 13 (to page 585)
Jan 25 No lecture (siggraph deadline)
Jan 30 Sampling theory, Fourier transforms 14.10
Feb 1 Image Processing 1
Feb 6 Image processing 2, Compositing and Morphing 17.6, Beier-Neely , Porter-Duff
Feb 8 Review, Reconstruction 14.10.5
Feb 13 3D object representations, meshes 11.1
Feb 15 Mesh data structures Assignment 1
Feb 20 Mesh Simplification, Progressive meshes Handout Chapter 2
Feb 22 Quadric Metrics, Progressive Meshes Handout Chapter 5
Feb 27 Splines Optional: Chapter 11
Mar 1 NURBs, Parametric Patches Optional: Chapter 11
Mar 6 Review, Subdivision Surfaces Optional (and very long): SIGGRAPH 00 course notes
Mar 8 Intro to Global Illumination Assignment 2 (due Sun 19)
Mar 20 Ray-Tracing Nuts and Bolts 1 Hanrahan chapter (handed out)
Mar 22 Ray-Tracing Nuts and Bolts 2 Hanrahan chapter (handed out)
Mar 27 Monte Carlo Integration 1 Book chapter 3 (handed out)
Mar 29 Monte Carlo Integration 2 See resources in slides
Apr 3 Monte Carlo Path Tracing Book chapter 5 (handed out)
Apr 5 no class (work on hw3/4) Assignment 4 proposal due TODAY
Apr 10 Project Proposals Assignment 3
Apr 12 Image-Based Rendering SIGGRAPH 00 course notes (useful as a reference)
Apr 17 Precomputation-based Real-Time Rendering 1 Spherical Harmonic Lighting Tutorial
Apr 19 Precomputation-based Real-Time Rendering 2 Assignment 4 milestone (due Fri 21, 11:59pm)
Apr 24 Project Presentations 1
Apr 26 Project Presentations 2
May 1 No class Assignment 4 (due May 1, 11:59pm)