CS475/CS675 - Computer Graphics

Semester 1 (Autumn), 2019-2020


This is the first course on Computer Graphics - here we will learn to draw images and make animations on the computer. This will be achieved by learning the underlying algorithms and hands-on implementations of those techniques. We will talk about everything, starting from basic drawing on the computer to special effects in movies. The course is very programming intensive and will emphasize a lot on assignments and at least one project. Watch the course teaser video to get an idea about its contents.


  • Class Timings: Slot 12
  • Office Timings: SIC 301, Kanwal Rekhi Building
  • Classroom: IIT Bombay Moodle, CS475/CS675 team on MS Teams
  • Course Mailing List: cs475 AT cse, cs675 AT cse (BTech and DD subscribe to cs475, MTech and PhD subscribe to cs675)
  • Teaching Assistant: Pratik Kalshetti, Sukanya Bhattacharya
  • Important: Academic Integrity of Assignment Submissions

Registration Instructions

  • If you are a B.Tech. student, register only for CS475
  • If you are a DD, M.Tech., or Ph.D. student, register only for CS675.
  • Never register for both CS475 and CS675.
  • You are not allowed to register for either of these courses if you have done another course that overlaps significantly in content with it. If you have a doubt about this, ask me.
  • Any CSE B.Tech. or DD student who is in the 2nd year or above can take the course.
  • Any CSE M.Tech. or Ph.D. student can take the course.
  • If you are a non-CSE B.Tech. or DD student who has done the data structures course (CS213/CS213M or equivalent), you can register for CS475, provided your Facad or department has no objection.
  • If you are a non-CSE B.Tech. or DD student who has not done a data structures course, I strongly recommend that you do not take this course. Registration on ASC will be blocked if you do not have the required pre-requisite and it is not possible to do a paper based exception this semester.
  • If you are a non-CSE M.Tech. or Ph.D. student who wants to take this course, you need your thesis supervisor’s approval. Please talk to me after you get that.
  • You can tag the course as whatever you want.
  • Audits are not allowed.


If you are curious about computer graphics at all - attend the first lecture.

  • Knowledge of C/C++ Programming is desirable.
  • Knowledge of basic Linear Algebra is desirable.
  • Knowledge of data structures and algorithms is desirable.
  • Learn how to use git.
  • Make sure you have a GitHub id. You will need it for the course.

Course Content

Date Topics Tasks and Resources
Jul 29 Introduction to the Course Join the mailing list for the course.
Aug 1 Setting Up OpenGL Go through the OpenGL tutorials page, run the triangle drawing tutorial.
Aug 5
Aug 9
Rasterization Basics Source code of demo shown in class and notes on Bresenham line drawing can be found here. Readings: Bresenham line drawing, Rasterization of Circles, Floodfill. Readings from textbook: Read Chapters 1, 2 and 3.
Aug 12 Clipping Read about Cyrus-Beck Clipping here.
Aug 19
Aug 23
Drawing in OpenGL Run the Colorcube example from the OpenGL tutorials.
Aug 26 2D Transformations Assignment 1 is out. Readings from book: Read Chapters 5 (Sections 5.1 - 5.3), 6 and 8 (upto Section 8.2).
Aug 29 3D Transformations Readings from book: Read Chapter 6. Quiz 1 on Sep 4.
Sep 4 Quiz 1 SIC-301, 8:30am-9:30am
Sep 5 Viewing Transformations Readings from book: Read Chapter 6.
Sep 6 Modelling-Viewing Pipeline Readings from book: Read Chapter 7.
Sep 9
Sep 12
Visibility Assignment 2 is out.
Sep 20 Mid-Semester Exam SIC-301, 4:00pm-6:00pm
Sep 23 Cubic Splines Readings from book: Read Chapter 15. Online notes on modelling curves are here.
Sep 26 Bézier Splines Readings from book: Read Chapter 15. Online notes on modelling curves are here.
Sep 30 B-Splines Readings from book: Read Chapter 15. Online notes on modelling curves are here.
Oct 3 Modelling Surfaces Online notes on modelling surfaces are here.
Oct 7 Hierarchical Surfaces More reference material is available in the online readings listed here. Assignment 3 is out.
Oct 10
Shading More reference material is available in the online readings listed here.
Oct 17
Oct 21
Texture Readings from book: Read Chapter 11.
Oct 23 Quiz 2 SIC-301, 8:30am-9:30am
Oct 24 Principles of Animation Online notes on animation.
Oct 31
Nov 4
Interpolation for Animation Online notes on animation.
Nov 4 Ray Tracing 1 Online notes on ray tracing.
Nov 7 Ray Tracing 2 Online notes on ray tracing.
Nov 15 End-Semester Exam SIC-301, 5:30pm-8:30pm

Assignments and Homeworks


  1. Books

    1. Textbook
      a. Fundamentals of Computer Graphics (Fourth Edition), Peter Shirley, Steve Marschner and others, A K Peters/CRC Press (2015)
      b. Publisher page is here.
      c. Amazon.in page is here.
      d. Flipkart.com page is here.
    2. Other Books
      a. Interactive Computer Graphics - A Top-Down Approach Using OpenGL (6/e), Edward Angel
      b. Computer Graphics using OpenGL (3/e), F. S. Hill Jr. and S. M. Kelley
      c. Computer Graphics with OpenGL (3/e), D. D. Hearn and M. P. Baker
  2. OpenGL Tutorials

    1. LearnOpenGL Tutorials by Joey de Vries
    2. OpenGL.org tutorial listings
    3. Nate Robins' OpenGL Tutorials
    4. OpenGL 4 Tutorials
    5. Anton’s OpenGL 4 Tutorials
  3. OpenGL Documentation

    1. OpenGL Programmers Guide - The Red Book (for OpenGL v1.1)
    2. OpenGL.org - The official OpenGL site
    3. OpenGL Registry. This has links to the various OpenGL Specifications.
    4. OpenGL Man Pages
  4. Associated Library Websites

    1. GLFW - OpenGL Context management, window and input handling
    2. GLEW - The OpenGL Extension Wrangler Library
    3. GLM - OpenGL Mathematics
  5. Online Readings

    1. Rasterization Algorithms
      a. The Bresenham Line Drawing Algorithm
      b. Optimizing the Bresenham Algorithm (Archived Version from the Wayback Machine)
      c. Algorithm for computer control of a digital plotter, J. Bresenham, IBM Systems Journal 4(1):25-30, 1965
      d. A Linear Algorithm for Incremental Digital Display of Circular Arcs, J. Bresenham, Communications of the ACM, 20(2):100-106, 1977
      e. Rasterizing Circles (Archived version from the Wayback machine)
      f. Interactive demo for Scanline fill
      g. Floodfill Algorithm for drawing filled polygons
      h. Pointillism
      i. Color Models
    2. Clipping Algorithms
      a. Cohen-Sutherland Line Clipping
      b. Cyrus-Beck (Liang-Barsky) Line Clipping
      c. Sutherland-Hodgman Clipping
    3. Transformations
      a. Homogeneous Coordinates
      b. Euler Angles
      c. Gimbal Lock
      d. Gimbal Lock
    4. Modelling-Viewing Pipeline
      a. Coordinate Systems in the Graphics Pipeline
      b. Modelling-Viewing Pipeline
    5. Visibility
      a. BSP Trees (courtesy the Wayback Machine)
      b. BSP FAQ
      c. The Art Gallery Problem
      d. Quadtrees
      e. More Quadtrees
      f. Octrees
    6. Modelling Curves and Surfaces
      a. Notes on Computing with Geometry
      b. Mathematical Elements for Computer Graphics by Rogers and Adams, Google Books
    7. Hierarchical Modelling
      a. Hierarchical Trasformations
      b. Hierarchical Modelling and Display lists in OpenGL
    8. Shading
      a. Phong Illumination Model
      b. Blinn-Phong Shading
      c. Per-Pixel Lighting
    9. Animation
      a. Principles of Traditional Animation Applied to 3D Computer Animation
      b. Continuity of Parametric Curves
      c. Quaternions and Spatial Rotations
    10. Ray Tracing
      a. Ray Tracing
      b. The Internet Ray Tracing Competition (the competition seems to be down at the moment)
      c. The Persistence of Vision Raytracer
      d. Object-Object Intersections
      e. Overview of raytracing on Scratchapixel