/computer-graphics-csc317

Course Page for Computer Graphics course

Primary LanguageCSS

Computer Graphics CSC317/CSC2504 Fall 2024

image courtesy Tim Jeruzalski

Instructors

Prof. David I.W. Levin
diwlevin@cs.toronto.edu

Prof. Karan Singh
karan@dgp.toronto.edu

TAs

Jonathan Panuelos
Lily Goli
Mengfei Liu
Victor Pineda
Wenzhi Guo
Yun-Chun Chen
Zewen Shen
Zhecheng Wang

csc317tas@cs.toronto.edu

Office Hours:

You can attend any office hours that fits your schedule

Mondays 10am-11am BA5258 (Karan)
Mondays 3pm-4pm BA5268 (Dave)

Lectures

Mondays 11:00-13:00 LEC101/LEC2001 BA1180
Mondays 13:00-15:00 LEC201/LEC2101 BA1190

Tutorials

Wednesday 11:00-12:00 LEC101/LEC2001 BA1180
Wednesday 13:00-14:00 LEC201/LEC2101 BA1190

Links

Use Assignment GitHub issue pages for questions/discussion

Programming Resources

www.cplusplus.com

OpenGL Tutorials at http://www.opengl-tutorial.org

The Matrix Cookbook

Eigen Matrix Library

Course Overview

This course introduces the basic concepts and algorithms of computer graphics. It covers the basic methods needed to model and render 3D objects, including much of the following: graphics displays, basic optics, line drawing, affine and perspective transformations, windows and viewports, clipping, visibility, illumination and reflectance models, radiometry, energy transfer models, parametric representations, curves and surfaces, texture mapping, graphics hardware, ray tracing, graphics toolkits, animation systems.

Prerequisites: C/C++ Programming, Linear Algebra, Calculus, Numerical Methods.

The student is expected to read background material on the hardware and local software, and should be comfortable with elementary linear algebra, geometry, and vector calculus. It is also assumed that the student is comfortable programming in basic C++.

(Strongly) Recommended preparation: Multivariable Calculus

Recommended Textbook

The Book.

This class involves required reading from:

Fundamentals of Computer Graphics, Fourth Edition, Steve Marschner, Peter Shirley, et al. 2015.

Digital e-book are available at CRC Press.

Lecture Schedule

Note: All assignments except 9 are available immediately. BUT we are only covering one assignment at a time. While you are welcome to look ahead, future assignments have not been debugged and we will not answer questions about them at tutorial or office hours until we cover them in lecture

You can find a series of short videos cut up by lectures and topics voicing over the lecture slides here.

Week Topic / Event
1 IntroductionDL,KS, RGBtoHSV,tutorial, Assignment 1 (Raster Images) Math Practicewaitlisted ? zip assignment and email to TAs due 17/09
2 Lecture2DL,KS, Assignment 2 Ray Casting due 24/09
3 Lecture 3DL,KS, Assignment 3 Ray Tracing due 01/10
4 Lecture 4DL,KS, Assignment 4 Bounding Volume Hierarchy due 8/10
5 Lecture 5DL,KS, Assignment 5 Meshes due 22/10
6 No Lecture, Thanksgiving
First In-Tutorial Test October 16th
7 Lecture 6,DL,KS, Assignment 6 Shader Pipeline due 5/11
8 No Lecture, Reading Week !
9 Lecture 7, DL, KS, Assignment 7 Kinematics due 12/11
10 Lecture 8, Assignment 8 Mass-Spring Systems due 19/11
11 Lecture 9
12 Second In-Class Test December 3rd

Quizzes

There will be 4 online quizzes available through Quercus. Each quiz will cover the content of two assignments each, from assignment 1 to assignment 8. Each quiz will go live after the respective topics are covered in class and must be completed on Quercus by the end of the term (December 3rd).

Academic Honesty (required reading)

image courtesy Gavin Barill

Grading

% Item
64 Assignments (best 7 of 8)
12 4 Quizzes (Online)
12 In Tutorial Test
12 In Class Test

There will be nine programming assignments of which we will count the best 8 marks (8% each).

Lateness Policy

Every student is given ten (10) late days which are automatically applied,starting at midnight on the due date. Weekends count as late days.

If you plan on not submitting an assignment (to take advantage of the best 8-of-9 policy) please let us know so late days aren't applied.

Academic Honesty

Academic honesty is a very serious matter and can result in very serious consequences. Note that academic offences may be discovered and handled retroactively, even after the semester in which the course was taken for credit. This is a challenging class aimed at teaching you the fundamentals of computer graphics. You wont learn much if you cheat but you might get a good grade if you get away with it. If all you want is a good grade take an easier class where you wont have to cheat!

For purposes of this class, academic dishonesty is defined as:

  • Any attempt to pass off work on a test, quiz or assignment that didn't come straight out of your own head.
  • Any collaboration on written or programming assignments (its ok to share ideas on programming assignments but the code MUST be your own) in which the collaborating parties don't clearly and prominently explain exactly who did what, at turn-in time.
  • Any activity that has the effect of significantly impairing the ability of another student to learn. Examples here might include destroying the work of others, interfering with their access to resources (e.g., digital cameras), or deliberately providing them with misleading information.

Email & Bulletin Board Traffic

  • Please use the TA Email List for all communications except for things that require a Professors dedicated attention.
  • Use github issue pages on assignment pages for questions
  • Do NOT broadcast pieces of your code or answers to written assignments to the github issues. Specific or general implementation questions whose answer would benefit all students in the class are appropriate. However: the bulletin board is NO replacement for the tutorial hour. That should be the main forum for asking/answering questions of this sort.
  • Questions of the form "I cannot find the problem with my code; here it is, can you help me" are unlikely to be replied, so don't count on it. If you have a question with code, take it to the TA office hours or to the tutorials.