COMS 4160 Administrivia

Fall, 2003

Note that this page is still being developed and subject to change.
Instructor: Ravi Ramamoorthi
CEPSR 610
212-939-7082
ravir@cs.columbia.edu
Office Hours: After Class Mon/Wed 4pm
TA: Aner Ben-Artzi
CEPSR 6LE4
212-939-7176
cs4160@cs.columbia.edu
Office Hours: Tue/Thu 1:30-2:30 and by appointment
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 CS4160 Class Bulletin Board.
  3. Send email to the TA at cs4160@cs.columbia.edu. 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 4160: Computer Graphics

This course is an introduction to 2-dimensional and 3-dimensional computer graphics. Topics covered include output primitives, 2-dimensional transformations and clipping, 3-dimensional display techniques, representations and transformations, projection algorithms, illumination and color models, hidden-surface elimination, Bézier and B-Spline curves, and rendering. There will be a strong emphasis on the mathematical and geometric aspects of graphics.

This will be a hopefully fun course, but will require considerable implementation.

Pre-requisites for the course: Solid C/C++ programming background. Linear algebra and some general mathematical skills. (If you only know Java, you may want to consider using this course as an opportunity to become familiar with C++.)

Note: This is the introductory graphics course. More advanced courses, you may consider taking in future semesters, (but not offered this year) are rendering and image synthesis (COMS 4162), geometric modeling and mathematical foundations (Ramamoorthi, spring 2005), and COMS 6160 Advanced topics in computer graphics (topic varies, most recently Ramamoorthi COMS 6998, Appearance models in graphics and vision, Fall 2002 and Belhumeur, COMS 6998, Image-based vision and rendering, Spring 2002).

Lectures

Mon/Wed 2:40-3:55pm, 1024 Seeley Mudd Bldg. Live CVN broadcast.

Assignments and Exams

There are four projects, comprising primarily of programming. All assignments are due by midnight on the dates specified below, unless explicitly stated otherwise. Some assignments should be completed individually, and some may be done in groups. For more detail, see the assignments page.  If you work with a group, you only need to hand in one copy of the assignment for all of you. If you choose to work with a partner(s), it is your responsibility to make sure that everyone in the project contributes equally.  That is, we cannot accept "half" of an assignment from you if your partner failed to do his/her part. You may work individually on some projects and with a partner on others, and you can change partners between projects.

For written questions, we will go over them in class, usually in classes specially designated as review sessions. Doing well on the tests will require following the material at the level of the content covered in the review sessions. There will be two in-class tests, roughly corresponding in timing to the midterm and the final, each worth 60 points, which will ask more theoretical questions and be closed book.

Late Policy

Your grade will be whacked 15% (of your actual score) for each 12 hours late (or 30% per day). After 3 days, no credit will be given. No extensions will normally be given. Additionally, a stronger late policy may be followed for the final assignments to allow for timely grading.

For example:

An assignment is due on Thursday 11:59pm.  Because you spent the week playing bridge at the Manhattan Bridge club instead of doing your work, you can't turn it in until the next Sunday 1pm.  Friday + Saturday + .5 * Sunday = 2.5 days late, and you will be penalized 75% of your grade.

Grading

Your final grades will be computed by weighting the assignments as follows.

HW # Written Programming
0 10 0
1 0 30
2 0 40
3 0 60
Test 1 60 0
4 0 125
Test 2 75 0

Books

If these books are not available in the bookstore or nearby stores, they are readily available with online booksellers like amazon.

Fundamentals of Computer Graphics

by Pete Shirley

This is a somewhat simpler book than the Foley van Dam ref, and it is therefore easier to grasp the material from this. Less encyclopedic though.


The OpenGL Programming Guide

by Woo et al.

This is a comprehensive tutorial on the Graphics API we will be using for the most of the course. If you ever intend to write substantial graphics programs, you should have this book. If you don't buy it, you're probably going to be sharing someone else's, or trying to decipher sample code. 


Optional: 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.


Optional: Real Time Rendering

by Moller and Haines

This is the best book available on techniques for creating interactive complex renderings.  It explains many of the techniques used by game creators, without focusing too much on the exact details of any one particular system ( like the "Black Art of { mac, windows, etc. } Game Programming" series of books ). This book will probably be most useful as a reference for the final video game project.


In addition to the above, the following books may be of interest for parts of the course.

Programming

There will be 4 programming assignments. In the beginning, we will provide a fairly complete skeleton of code to get you started. As the course progresses, you will be expected to write more and more of the assignments from scratch. You may feel free to re-use code from previous assignments at any time, particularly to handle window setup and interaction.  All the assignments are based on OpenGL, a portable graphics library. Since everything about these assignments is portable, you can do them on any computer you want. Avoid platform specific code, like user interface widgets, since we need to be able to grade your code.

In general, you can work on any computer you need, but we will make specific on what platforms we expect to grade the work, and you should ensure your code will compile and run on this platform. We will support only a particular platform. If you choose to work elsewhere, you are on your own.

The TA will announce more details shortly.

Collaboration Policy

Programming projects are to be implemented in groups of 2 from scratch in assignments 1 and 2, i.e., you should not derive solutions from existing sources or previous instances of this course. Discussion of programming projects is allowed (encouraged). Copying of solutions or code from other students, or from students who previously took this course is not allowed. If you do obtain substantial help from the instructor, TA or another student, you must document this in your program. A good guideline is that you must be able to explain and/or duplicate anything that you submit. Furthermore, you should in general not copy code from other sources. If in doubt, please ask.

For the later programming assignments (3 and 4), we will make changes to this policy in that groups of 2 people can/must work together and turn in a single assignment. More details will follow at the appropriate time.

Lecture schedule and assignment due dates

Broadly the first part of the course can be categorized as modeling and the last few lectures as rendering. We will not be covering other topics like animation in this course. Note that we will periodically assign lectures to reviewing problems and working out mathematical examples. Readings are with respect to the Shirley text unless otherwise noted. It is important that you follow the topics discussed in lecture. The rest of the reading is primarily background information that may be of interest. If you refer to an alternative text, you should find it fairly easy to correlate readings.

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 Tuesday, Sep 9 and so on.

Date

Topic

Due Related Reading
Sep 3 Overview of Computer Graphics, course 1,2
Sep 8 Transformations 1 Homework 0 4,5
Sep 10 Transformations 2, Viewing 5,6
Sep 15 Viewing Math 11.2
Sep 17 OpenGL 1 GL 1-4
Sep 22 OpenGL 2 GL 5-9
Sep 24 OpenGL 3 Homework 1
Sep 29 Review of Transformations
Oct 1 Review of Viewing/OpenGL
Oct 6 Curves 1 13
Oct 8 Curves 2 13
Oct 13 Review 1 of curves
Oct 15 Review 2 of Curves Homework 2
Oct 20 Illumination and Shading 1 8,16
Oct 22 In class midterm 15
Oct 27 Illumination and Shading 2 16,21
Oct 29 Review of illumination 9
Nov 5 Ray Tracing Homework 3 9
Nov 10 Global Illumination 19
Nov 12 Radiosity 19
Nov 17 Review of Ray tracing, radiosity 16.13
Nov 19 Review of rendering
Nov 24 Story of Computer Graphics Homework 4
Nov 26 Current research
Dec 1 No lecture Test 2/Final
Dec 3 Test 2/Final
Dec 8 No lecture

Thanks to Greg Humphreys for the layout and parts of the content in these pages.