CS 488/688: Introduction to Computer Graphics
Spring 2022
Welcome to the home page for CS 488/688, the introductory computer graphics course in the School of Computer Science at the University of Waterloo. This course focuses on 3D graphics, although it does discuss some aspects of user interface design. CS 488/688 has a fairly heavy project component and should not be taken in conjunction with other heavy project courses.
Course logistics for Spring 2022
- Instructor
- Spencer Van Leeuwen
srvanlee@uwaterloo.ca
Office hours: Fridays at 2:00–3:00 PM ET in DC 2126. - Teaching Assistants
- Mustafa Ege Ciklabakkal
mustafa.ege.ciklabakkal@uwaterloo.ca
- Logan Mosier
logan.mosier@uwaterloo.ca
- Weijie Zhou
weijie.zhou@uwaterloo.ca
- TA Office Hours: Mondays and Tuesdays at 1:00–2:00 PM in the Undergraduate Graphics Lab (MC 3007). The schedule can be found here.
- Lectures
- Mondays and Wednesdays at 2:30–3:50 PM in MC 4063
- Undergraduate Graphics Lab
- MC 3007. There are no scheduled lab times. Safety protocols for shared spaces on campus apply in the lab. The lab is available 24 hours a day for students enrolled in CS 488/688. The code to open the lab will be provided on Piazza shortly after classes begin.
- Exams
- Midterm: Wednesday, June 8 at 2:30 PM in MC 4045
Final Exam: Friday, August 5 at 7:30-10:00 PM -- MC 4021 - Course Outline
- The course outline contains general information about the course, including the marking scheme.
- Course Notes
- Lectures covering assignment-related content will be based on the CS 488/688 course notes. They are available as a downloadable PDF.
- Recommended Text
-
There are several free to access books available in the course reserves. Here are a couple that are worth highlighting:
- "Fundamentals of Computer Graphics" by Marschner and Shirley has a lot of overlap with this course and explains concepts very well.
- "OpenGL Programming Guide: The Official Guide to Learning OpenGL" (currently the 9th edition by Kessenich et al.) is traditionally recommended for this course. It may be of use for the project, but online resources are less dense and are generally more appropriate for assignments.
- Piazza
- We're using Piazza for questions and discussions of class-related material. You should have been signed up at the start of the term. If you have not been enrolled on Piazza, you should email the instructor to get access.
Spring 2022 Assignments
- Please read our additional notes regarding assignment completion and submission. These notes may help you avoid losing marks unnecessarily.
-
Assignment 0: Warmup
Due Wednesday May 11 at 2:00 PM -
Assignment 1: OpenGL
Due Wednesday May 18 at 2:00 PM -
Assignment 2: Pipeline
Due Wednesday June 1 at 2:00 PM -
Assignment 3: Puppet
Due Wednesday June 15 at 2:00 PM -
Assignment 4: Trace
Due Wednesday June 22 at 2:00 PM -
Assignment 5: Project
Proposal due Wednesday June 29 at 2:00 PM
Revised proposal due Wednesday July 6 at 2:00 PM
Final code submission due Tuesday July 19 at 10:00 PM
Demos: Wednesday July 20 and Thursday July 21
Project Written Report: Monday July 25 at 2:00 PM
Additional Resources
- The website open.gl can be a good starting point for programming in modern OpenGL.
- A longer sequence of tutorials at learnopengl.com goes into more detail about specific topics in OpenGL.
- Song Ho Ahn also has a number of useful tutorials that explain concepts in 3D computer graphics, especially as related to the OpenGL graphics pipeline.
- Docs.gl for the OpenGL API reference.
- Terence's OpenGL tutorial slides.
- In addition to the ray tracing chapter in "Fundamentals of Computer Graphics" by Marschner and Shirley in the course reserves, other good ray tracing resources include the pbrt book as a general reference and Peter Shirley's e-books as supplementary material.
- The website realtimerendering.com lists a bunch of books that are free online.
- The graphics codex can serve as a reference to the topics and tools used in graphics.
- Shadertoy and GLSL Sandbox showcase interesting (fragment) shader programs.