CS 4600: Computer Graphics, Fall 2017

Course Information

Lectures: WEB 1230, Mon/Wed, 11:50am - 1:10pm


Ladislav Kavan

Lead TM:

Dimitar Dinev


Jing Li, Saman Sepehri, Ankur Rathore, Junior Rojas

Course objectives:

Gain hands-on coding experience with computer graphics techniques and algorithms covering 2D graphics, 3D graphics and computer animation. This course focuses on key algorithmic techniques and mathematical foundations, not on specific tools or APIs. Note that OpenGL and shader (GPU) programming is covered in a follow-up course CS 5610/6610 (Interactive Computer Graphics).


  1. Mathematics for computer graphics: linear algebra, matrices, dot/cross products, homogeneous coordinates, linear and projective transformations, quaternions.
  2. 2D Graphics: Colors, raster formats, Fourier and DCT transformations, image file formats, JPEG compression, image deformation, rasterization.
  3. 3D Graphics: Projections and view frustum transformations, visibility algorithms, 3D scene representation, ray tracing.
  4. Animation (or 4D Graphics - adding the time dimension): Skeletal animation and skinning algorithms.

Homework Assignments and Lecture Notes:

Available through our Canvas site


The best place to ask are Canvas Discusson Boards

Textbooks (optional):

Shirley & Marschner, Fundamentals of Computer Graphics, 4th edition.

Gortler, Foundations of 3D Computer Graphics, 1st edition.

Useful online resources:

Online C++ tutorials

Online OpenGL tutorials

ACM Digital Library (SIGGRAPH papers and recorded presentations)

ACM SIGGRAPH 2018 Student Volunteer Program

Ke-Sen Huang's Computer Graphics Resources (non-official but very useful)

Policies and guidelines:

College of Engineering Guidelines

Academic Misconduct Policies
In this course, any of the following cases is classifed as academic misconduct: 1) sharing your homework assignment solution or its part with another student, or 2) requesting or using parts of homework assignment solutions prepared by another person (including students who took this course in previous years), or 3) re-using parts of third-party code (such as code fragments from online tutorials, software libraries, or books). Academic misconduct as defined above will result in a failing grade sanction, according to the School of Computing Academic Misconduct Policy.