## About COMS W4160, Spring 2013

**Professor:**

Changxi Zheng,
cxz at cs.columbia.edu

office hours: 10:30AM-11:30AM Friday, 616 CEPSR

**TAs:**

Sunil Khanal, sk3679 at columbia.edu

office hours: 4:00PM-5:00PM Monday, 1:30PM-2:30PM Wednesday, 122A Seeley W. Mudd Building

Papoj Thamjaroenporn, pt2277 at columbia.edu

office hours: 1:00PM-2:00 Tuesday and Thursday, 6LE4 CEPSR

**Time and place:**

TR 11:40AM–12:55PM, 535 Seeley W. Mudd Building

**Textbook:**

**Supplemental books and materials:**

- OpenGL reference page
- OpenGL "Red Book"
- Nate Robbin's OpenGL "tutors"
- 3-D computer graphics: a mathematical introduction with OpenGL, Volume 385, By Samuel R. Buss
- Andrew S. Glassner, An Introduction to ray tracing, 1989

### Prerequisites

- C/C++: We expect you know how to program in C/C++. Our example code will use a few "advanced" features of C++ (such as templates and STL). Knowing how to program fluently and debug C/C++ smoothly will probably make you easier to succeed in the course.
- Basic Linear Algebra: matrix computation, simple numerical methods (integration, differentiation, polynominals)
- Trigonometry

### Coursework

#### Homework

The plan of homework is not completely determined. We would like to leave it flexible, and might slightly adjust it based on the over progress of this course.There will be a few textbook readings assigned in class, 1 short paper homework, 4 programming assignments, and 1 final project. The paper home work will involve things like working out numerical or other short answers (which should always be backed up by some brief reasoning), answering "why" questions, and drawing graphs or other pictures. It may be handwritten or printed and is to be turned in at the beginning of class on the due date. After it is graded, we will return it back to you.

#### Programming assignments

There will be four programming assignments as part of the course. Here is a tentative list of the assigments:

**Hello World!**: An interactive OpenGL application: a small video game.**Animation**: Forward and inverse kinematics for character animations.**Pipeline**: A software model of a modern programmable graphics processor, using vertex and fragment processing to achieve a variety of rendering effects.**Ray Tracing**: A simple yet full-featured ray tracer that can handle large models and do advanced shading, including texture mapping and reflections in shiny surfaces.

All the code should compile on the CLIC machines (or remotely if you have properly set up the connection). To help you learn the programming, we will provide you some example code to illustrate certain functionalities. But you are free to learn by the plenty of examples online (see the supplemental links above). These programs are to be done alone.

To ease your validation and debug of the code, for certain assignments we will provide a few test cases and the expect results. So you can compare them with your own results to (partially) verify your code.

#### Exams

There will be 1 in-class prelim as the midterm. Time: Mar. 26.

### Grading

Each homework to be graded will be scored out of 4 points on a 4.5-point scale:

- 0: Didn't hand it in
- 1: An attempt at a solution
- 2: A partially correct solution
- 3: A mostly correct solution
- 4: A correct solution
- 4.5: A creative and insightful solution

Your final grade will be a weighted average of the grades on the assignments and exams. The paper homeworks will account for 8% of the grade, the program assignments will account for 56% (14% each), the in-class prelim will account for 11%, and the final project will account for 25%.

The prelim will cover the first half of the course. It will largely be similar to paper homeworks, textbook material and questions.

All exams are closed book, but you are allowed to bring one letter-sized piece of paper with writing on both sides, to avoid the need to memorize things.

#### Due dates and late assignments

Programming assignments are due at 11:59 pm on the due date and are accepted with a late penalty.

- Hand in by late deadline within 1 day: you get 85% of your score
- Hand in by late deadline within 2 day: you get 70% of your score
- Hand in by late deadline within 3 day: you get 50% of your score
- Hand in by late deadline within 4 day: you get 20% of your score
- More than 4 days late: no credit

Assignments that are handed in under option 2 will not be graded carefully and may be returned very late. There options are just intended to give you a chance to reduce the effect of zeros averaged into your grade.

### Policies

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 unless you *cite* a source for it.
In short, you are expected to submit your own solution of all the coursework.

#### Discussion/Collaboration

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

In this course, we expect complete integrity from everyone. School life 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 stressful to complete the course work on your own, come to talk to the professor or the TAs, 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.

### FINALLY

We hope you enjoy the class! Have fun!