COMS 4160 Administrivia
Fall, 2004
Instructor: | Ravi Ramamoorthi CEPSR 610 212-939-7082 ravir@cs.columbia.edu Office Hours: MW 4-6pm (after class) If you can't find me in my office, please check in the lab in 6LE4 |
Head TA: | Aner Ben-Artzi CEPSR 6LE4 212-939-7176 cs4160@cs.columbia.edu Office Hours: M 1:30-2:30pm in MRL, W 1:30-2:30 in 6LE4 |
Secondary TA/grader: | Sebastian Enrique CEPSR 6LE4 212-939-7176 cs4160@cs.columbia.edu Office Hours: MTh 11:30am-12:30pm |
COMS 4160: Computer Graphics
This course is an introduction to 2-dimensional and 3-dimensional computer graphics. Topics covered include 2-dimensional transformations and clipping, 3-dimensional display techniques, representations and transformations, projection algorithms, Bézier and B-Spline curves, illumination and shading models and rendering. There will be a strong emphasis on the mathematical and geometric aspects of graphics. The course has been taught by me the previous two years ( Fall 2003 , Spring 2003 ), and will now be taught regularly every year, likely by me in the Fall.
This will be a hopefully fun course, but will require considerable
implementation and understanding. In the past, the main complaint has
been from a few students who found the required programming for
assignments 3 and 4 difficult, especially since graphics programming
in OpenGL is a new skill, and debugging and working with graphical
programs requires substantial work, which is difficult to replace by
teaching it theoretically. The main advice is to START EARLY
on the programming assignments and ask the instructor or TA if
you run into any difficulties; we are always ready to help. Most students do
successfully complete the assignments, and find the course very
rewarding and fun, with the ability to understand the theory behind
and implement graphics programs. Also, in recognition of the level of
effort required, the course will be graded very generously, so if you
do all the work, you will have a lot of fun, and get a very good grade.
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. A more advanced follow on course (COMS 4162) will be taught by me in the spring. There are a number of other 6000-level courses of interest, taught by the department that you may consider this spring or in future years.
Lectures
MW 2:40-3:55pm live on CVN, 1024 Mudd
Assignments and Exams
There are four projects, comprising primarily of programming. All projects are due by midnight on the dates specified below, unless explicitly stated otherwise. The first two assignments should be completed individually, and the third and fourth in groups of two. For more detail, see the assignments page. In group assignments, you only need to hand in one copy of the assignment. In this case, it is your responsibility to make sure that you both contribute equally. That is, we cannot accept "half" of an assignment from you if your partner failed to do his/her part. You can in principle change partners between assignments 3 and 4, but these assignments are closely interlinked, so that is undesirable.
For written questions, we will go over them in class, usually in classes specially designated as review sessions. Doing well on the midterm will require following the material at the level of the content covered in the review sessions. The midterm will perhaps be slightly challenging but generally not too difficult, and will follow the pattern of questions in the review sessions. The midterm will be in class. We will also have two written assignments at the end of the course that will focus on more theoretical questions related to rendering. These assignments are to be completed individually without collaboration. They are not intended to be difficult, but to make sure you at least take the trouble to look up and understand the lecture material at some level. The main grading will be based on completing the programming assignments; the midterm and written assignments are intended to make sure you are paying some attention to the more theoretical aspects of the course. There will be no formal final exam in the course. As noted earlier, the main point is to do well on programming assignments 3 and 4.
Late Policy
Your grade will be whacked 15% (of your actual score) for each 12 hours late (or 30% per day). The late deduction is a step function. That is, you lose 15% of your score for being 1 min late or for being 11 hours 59 minutes late. You lose 30% of your score for being 12 hours and 1 minute late. After 3 days, no credit will be given. No extensions will normally be given, unless for very compelling personal reasons. Additionally, a stronger late policy may be followed for the final assignments to allow for timely grading.
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 | 70 |
Midterm | 60 | 0 |
4 | 0 | 130 |
Written 1 | 30 | 0 |
Written 2 | 30 | 0 |
Books
I would first like to note that it is difficult to find a suitable graphics textbook; they all have their disadvantages. For some of the topics, we will not be following any particular textbook. We will however, try to refer to the relevant textbook material in the lecture notes, or note that this material is not well covered in the book (and make the lecture slides complete). As far as what the course tests, and therefore what you need to focus on in the reading, it will be based on the lecture material. We note here some of the texts we recommend, along with commentary on the book's suitability.
If these books are not available in the bookstore or nearby stores,
they are readily available with online booksellers like amazon.
Required: Fundamentals of Computer Graphics
by Pete Shirley
This is a fairly simple text. The advantage is that it is easy to follow to get some understanding of the topics. The disadvantage is that the approach and content to the various topics may not quite follow the lectures, and some topics may be treated too simply or not very well at all. Last year, most students liked this textbook, and you should definitely have it. However, it may not suffice well for all the material. We will try to be explicit in lecture where we are and are not following the text. If we don't follow the text, we will try to prepare some notes, give out handouts, or make the lecture slides very explicit.
Computer Graphics: Principles and Practiceby 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. If you have further interest in graphics, like are considering taking the more advanced course, I would definitely recommend getting this. If not, I would still recommend being able to follow up in it, in case there are certain topics you want to see in more detail. The main disadvantage is the encyclopedic nature of the text, making the exposition quite complicated, that can go over the head for many students taking graphics for the first time. In many ways, the Shirley text is at the other extreme, and the course (hopefully!!) tries to find a middle path.
Required: The OpenGL Programming Guide Fourth Edition
by Woo et al.
This is a comprehensive tutorial on the Graphics API we will be using for 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. Please note that you will be using this primarily as a reference, looking things up as and when you write code. The syllabus below refers to chapters that you will need to know, but that is more as a reference to what we will be covering. In practice, you will gain more by actually doing and looking up what you don't know, rather than just reading the red book end to end.
Optional: Real Time Rendering Second Edition
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.
Programming
There will be 4 programming assignments. In the the first two assignments, 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. For assignments 3 and 4, you will be completely on your own. 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. However, see the bulletin board. We are only supporting the assignments for Windows. If you use another platform, you are largely on your own for sample solutions, compilation issues etc. and you must make sure HW 1 and HW 2 compile on our machines and you can demo HW 3 and HW 4 for us. 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, though in the past, most students have worked on windows platforms, and Windows with Visual C++ is what we will be using to grade the work. See the bulletin board for access to the Microsoft Research Lab where you can use Windows computers with powerful CPUs and graphics cards. 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. If you don't have visual studio, speak to the TA to get a copy. If there are other issues about where to work, again speak to the instructor or TA.
Collaboration Policy
Programming projects are to be implemented either individually (assignments 1 and 2) or in groups of 2 (assignments 3 and 4) from scratch, 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 written assignments, the midterm will be in class closed book, but will closely follow the material in the review sessions. The written assignments at the end of the course are take home and open book; they will be rather straightforward. For all the written assignments, you are to work individually, with no collaboration with other students.
Lecture schedule and assignment due dates
Broadly, the course is divided into 5 segments (with some fun lectures on animation, real-time rendering and the story of computer graphics thrown in). Note that we will periodically assign lectures to reviewing problems and working out mathematical examples.
The first segment deals with the mathematics of transformations and viewing, telling you how to move and scale objects to place them correctly in the world. This is the basis for assignment 1. The second segment describes how to use Bezier and B-spline curves to interpolate points and create shapes. This is the basis for assignment 2. Together, these segments relate to modeling or creating models of the world you want to make a picture of. The third segment describes OpenGL, the graphics API we will be using, and is the basis for assignment 3. Segment 4 describes how to make images once you have a geometric model of the world, discussing illumination and shading models. It will be tested individually in the first written assignment. The final video game project is open ended and tests if you can synthesize the knowlege from the first four segments to create a compelling interactive graphics system. Finally, segment 5 describes global illumination models and more advanced rendering, beyond the scope of OpenGL, and is the basis for the second written assignment. Together, segments 4 and 5 deal with rendering or creating images of computer graphics models.
Readings are with respect to the Shirley text unless otherwise noted. Note that the course (and midterms/assignments etc.) is based primarily on the material in lecture; we will not test you on supplementary reading material not covered in lecture. In all of the lectures, we will try to make explicit which sections of the chapters we cover, and how our coverage relates to that in the text and handouts.
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 14 and so on.
Date |
Topic |
Due | Related Reading |
Sep 8 | Overview of Computer Graphics, course | ||
Sep 13 | Vectors and Linear Algebra | Homework 0 | 2,4 |
Sep 15 | Transformations 1 | 5 | |
Sep 20 | Transformations 2 | 5,6.2.1, 3.5 RTR (handout) | |
Sep 22 | Viewing | Homework 1 | 3.5 RTR (handout) |
Sep 27 | Curves 1 | (Optional) handout 4-5.1,8.1-3 of CAGD | |
Sep 29 | Curves 2 | (Optional) handout above, polar forms paper | |
Oct 4 | Review 1 of curves | Curves problems | |
Oct 6 | Review 2 of Curves | Homework 2 | Curves problems |
Oct 11 | OpenGL 1 | START EARLY HW 3 | GL pages 1-50 |
Oct 13 | OpenGL 2 | START EARLY HW 3 | GL chapters 3,7, early part of 9 |
Oct 18 | OpenGL 3 | GL chapters 4,5 | |
Oct 20 | Review of Transformations | Homework 3 Milestone | Transform/OpenGL problems |
Oct 25 | Review of Viewing/OpenGL | Transform/OpenGL problems | |
Oct 27 | In class Midterm | ||
Nov 3 | Illumination and Shading 1 | 8 | |
Nov 8 | Illumination and Shading 2 | Chapter 2, C&W (handout) | |
Nov 10 | Illumination and Shading 2 (contd) | Homework 3 | Chapter 2, C&W (handout) |
Nov 15 | Review of illumination | Illumination problems | |
Nov 17 | Story of Computer Graphics | Written Ass 1 | |
Nov 22 | Texture Mapping 1 | Homework 4 Milestone | |
Nov 24 | Texture Mapping 2 | ||
Nov 29 | Ray Tracing | 9 | |
Dec 1 | Global Illumination | 16.2, 2.6.2 handout | |
Dec 6 | Radiosity | FvDFH 16.13.1-2 | |
Dec 8 | Summary and preview of COMS 4162 | HW 4 due Sunday 12 | |
Dec 13 | No Lecture: Homework 4 demos | Ass 2 due Tue 14, 5pm |
Thanks to Greg Humphreys for the layout and parts of the content in these pages.