COMS 4160: Introduction to Computer Graphics
People
The instructor for this course is Silvia Sellán. Her office hours are on Mondays and Wednesdays between 9 and 10 am at her office (CEPSR 624).
This course also has three Teaching Assistants. Their office hours will take place at the Computer Science TA Room (Mudd 122) and are listed below:
- Kavin Aravindhan Rajkumar: Tuesdays, 10:30am - 12:30pm
- Jason Han: Fridays, 3:30pm - 5:30pm
- Simrin Ponamgi: Thursdays, noon - 2 pm.
Contact and communication
If you have questions about the course, you are encouraged to post a question on the Ed platform, which will be monitored by the entire course staff. Asking questions through Ed is the best way to ask questions since it ensures your message reaches the entire course staff quickly and you may find your question already asked and answered by someone else or help another student with a similar question.
If you have a private question or comment about the course assignments, grading or syllabus, that for whichever reason you do not want to ask on Ed, you should attend one of the TA office hours above or reach out to one of the course TAs directly. Their emails are as follows:
- Kavin Aravindhan Rajkumar, kr3131@columbia.edu
- Jason Han, jason.han@columbia.edu
- Simrin Ponamgi, snp2136@columbia.edu
If you have questions or comments about the course that cannot be answered by the TAs, or that the TAs have not answered to your satisfaction, please attend Silvia’s office hours on Mondays and Wednesdays before class.
Finally, in exceptional circumstances in which you have urgent questions or comments that cannot be answered by the TAs and cannot wait until Silvia’s next office hour session, or if she has told you herself that you should email her, please email Silvia.
Note: If you email Silvia or the TAs from an email address that is not your official Columbia address, or communicate with us in any other way that is anonymous or obscures your identity, we will not respond.
Textbook
This course will closely follow this textbook by Marschner, Shirley et al. Both the fourth and the fifth editions will be sufficient to follow the course.
Lecture calendar
Lectures will take place in CSB 451. Lecture slides in PDF format are posted in the “Files” section of CourseWorks shortly after each lecture.
| Week | Monday (10:10am - 11:25am) | Wednesday (10:10am - 11:25am) | Notes |
|---|---|---|---|
| 1 | September 1st: No class: Labor day | September 3rd: Introduction to Graphics | … |
| 2 | September 8th: Raster images | September 10th: Ray casting I | … |
| 3 | September 15th: Ray casting II | September 17th: Ray tracing I | Additional resources on ray-object intersections: Ch. 4.4 of textbook (4th Ed.), A2 and this and this |
| 4 | September 22nd: Ray tracing II | September 24th: Ray tracing III | … |
| 5 | September 29th: Textures | October 1st: Bounding Volume Hierarchies | … |
| 6 | October 6th: Rasterization I | October 8th: Rasterization II | … |
| 7 | October 13th: Code Review (Classroom “exam”) | October 15th: Guest Lecture: Theodore Kim, Yale University | … |
| 8 | October 20th: Assignment Review | October 22nd: Geometry I | … |
| 9 | October 27th: Geometry II | October 29th: Geometry III | … |
| 10 | November 3rd: No class: University Holiday | November 5th: Assignment Clinic (Mandatory attendance) | … |
| 11 | November 10th: Animation I | November 12th: Animation II | … |
| 12 | November 17th: Animation III | November 19th: Assignment Clinic (Mandatory attendance) | … |
| 13 | November 24th: Graphics and Vision | November 26th: No class: Indigenous Peoples’ Day / Thanksgiving | … |
| 14 | December 1st: Final Project Presentations I | December 3rd: Final Project Presentations II | … |
Evaluation
There will be eight assignments, each worth 10% of your grade. The Final Project will be worth 20%. The grade on each assignment will depend not only on the quality of the work you hand in, but also on your ability to explain your program’s code in the Code Review and Assignment Clinic sessions. You must attend the Code Review and Assignment Clinic sessions on the dates specified above, as well as your final project presentation in December.
Please submit your assignments via CourseWorks.
Assignments
| Number | Title | Link | Due date | Notes |
|---|---|---|---|---|
| 1 | Raster images | Github | September 15th | |
| 2 | Ray casting | Github | September 22nd | |
| 3 | Ray tracing | Github | September 29th | |
| 4 | Bounding Volume Hierarchies | Github | October 11th | |
| 5 | Shaders | Github | October 22nd | |
| 6 | Meshes | Github | November 7th | |
| 7 | Kinematics | Github | November 21st | |
| 8 | Mass-Spring Systems | Github | December 5th |
Late policy
A deadline of “Month XX, Day YY” means the assignment solution must be uploaded to CourseWorks before 23:59, New York local time, on day YY of Month XX.
Each student has five late days, to use at their discretion throughout the course (you do not need to specify a reason for using them, and the TAs will keep track of these). These late days cannot be used for the course’s final project, since it will be presented in class by the student. No additional extensions will be given except for those required by University or Departmental policy.
Final Project
For the course’s final project, you need to generate a creative image or video combining more than one of the topics in this course’s assignments: for example, render an image using the techniques in Assignment 3 and edit it using the image processing techniques of Assignment 1. Model a mesh using the methods in Assignment 6 and render it using Assignment 5 or Assignment 3. Use Assignment 6 to design a shape and render an animation of it produced with the methods in Assignments 7 or 8. Feel free to use external code, data, information or ask any friend (real or virtual) for help.
This project is purposefully broad, and will be mostly judged on creativity: its goal is that you remember that the reason we are spending so many hours debugging very low-level code is to create tools for people to be creative with. You should get to enjoy these tools a little bit too.
You will need to upload your final project in CourseWorks. Only upload the image or video, no need to upload any code. You should also upload a short (one paragraph) description of how you generated it, as a .txt file.
You will need to “present” your result in class. This can be as easy as reading that paragraph out loud while the image or video is on the screen. You will not be able to use slides or any other materials apart from your final image or video. Given that we want every student to be able to present, presentations will be very brief: each student will have only two minutes to present.
If you have any questions about the final project, feel free to ask in a TA session with Silvia or the TAs.
Grading
Your final percentage grade will be computed by adding the percentage grade of all the assignments plus twice the percentage grade of the final project, and dividing the result by ten. This final percentage grade will be converted into letters as follows:
- A+: 95% or higher
- A: 90% to 94%
- B+: 85% to 89%
- B: 80% to 84%
- C: 70% to 79%
- D: 60% to 69%
We reserve the right to globally curve all grades upwards at the end of the course (improving your letter grade, never reducing it), but we will not negotiate the conversion table above for individual students.
Academic honesty
Please review the Academic Honesty and Integrity policies from the Department of Computer Science and the School of Engineering. Students must abide by these policies, or suffer the penalties enumerated in them.
Generative AI policy
You should not use generative AI to produce the solution to any of the assignments. You are allowed to use generative AI to produce your final project image (but do not lie about it if asked).
Acknowledgements
The materials used for this course make heavy use of course materials generously shared by Professors Alec Jacobson, David I.W. Levin, Oded Stein and Changxi Zheng.