CS 411
Computer Graphics (Fall 2019)

Syllabus Show me more

cs 411 - Computer Graphics

Computer graphics is an important topic with numerous applications in all areas of computer science. As a corner stone to interactive user interfaces and games, computer graphics techniques are utilized in everyday computer operation. Common uses of computer graphics techniques include engineering, scientific, and entertainment applications such as: computer aided design, analysis and visualization of data, visual simulation and monitoring of complex processes, animation and special effects, movie productions, and computer games. Computer graphics techniques also play a fundamental role in web and multimedia computing, enabling interactive webpages and vector graphics in documents.

The course covers the following topics: Overview of computer graphics hardware and software; Introduction to graphics programming with WebGL; Raster graphics; 2D modeling and viewing; Curve and surface interpolation; Introduction to 3D Rendering with WebGL; 3D Modeling and viewing; Illumination models and surface rendering; Animation. Programming assignments in the course will use WebGL which is a version of OpenGL that can run on web browsers and is very similar to OpenGL ES which is an OpenGL version intended for mobile platforms such as Android and IOS. Prior knowledge of WebGL is not required as it will be taught in the course.


Gady Agam  
SB 237e, x7-583
Office hours:
Tuesday, Thursday


Grant Nikseresht
SB-110, x7-5705
Office hours:
Tuesday, Thursday 3:00-5:00pm


CS-411-01:  (PS-121)

CS-411-02:  (Internet)

CS-411-03:  (Internet)

Class hours:
Tuesday, Thursday


Course outline

What to expect from this course

Computer graphics can be covered at different levels. The focus of this course is the understanding of algorithms and techniques used in computer graphics. Students in the course are expected to write computer programs implementing different techniques taught in the course. The course requires mathematical background and some programming experience. This course does not intend to teach how to use a specific graphics application software such as 3ds Max. While a graphics API (WebGL) is used in the course it is by no means the primary goal of this course.


  1. Provide overview of computer graphics.
  2. Provide understanding of mathematical concepts and algorithms used in computer graphics in two and three dimensions.
  3. Provide graphics programming experience with WebGL.


  1. Introduction: overview of computer graphics, overview of graphics hardware and software
  2. Introduction to graphics programming with WebGL: overview, concepts, syntax, libraries, basic drawing, state management
  3. Raster graphics: line and conic sections drawings, area filling, character generation, image operations, object attributes, antialiasing
  4. 2D modeling and viewing: geometric transformations, homogeneous coordinates, affine transformation, line and polygon display
  5. Curve and surface interpolation: parametric curves, continuity, cubic splines, parabolic blending, Bezier curves, B-splines, non-uniform rational B-splines (NURBS), surface interpolation
  6. Introduction to 3D Rendering with WebGL: 3d rendering concepts, 3d modeling and viewing in WebGL
  7. 3D modeling and viewing: 3D transformations, the 3D viewing pipeline, projections, clipping, visible surface detection, depth sorting, hierarchical modeling
  8. 3D object representation: polygonal surfaces, octrees, BSP trees, volumetric representations, surface representations, bounding spheres, bounding boxes, collision detection, scene graphs
  9. Color, illumination models, and surface rendering: basic illumination models, polygon rendering, texture and bump mapping, color models, blending.
  10. Global illumination: ray tracing, radiosity.
  11. Animation.


  up to 4 unjustified missed classes and all quizzes  ⇒  full credit
 5-7 assignments
midterm exam
  open notes (1 double sided 8.5x11 page)
final exam
  open notes (2 double sided 8.5x11 pages)

  1. There is an additional mandatory assignment (assignment 0) which does not carry any credit. There is a penalty of 5% for not submitting this assignment.
  2. A certain percentage of the students may be invited to discuss their assignments.
  3. Late days: there is a total of 6 "free late days" with no grade penalty for all the assignments to cover various reasons such as not feeling well, being busy, etc. Up to 2 free late days may be applied to each assignment. Being late beyond what is allowed by the free late days will result in a grade reduction of 25% per day. Late days are counted past midnight when an assignment is due and include weekends and holidays. All submissions must be made before the last day of class.
  4. Each member of this course bears responsibility for maintaining the highest standards of academic integrity. All breaches of academic integrity must be reported immediately. Copying of programs from any source (e.g. other students or the web) is considered to be a serious breach of academic integrity.
  5. The usual grade scale applies: A > 90, B > 80, C > 70, etc.
  6. If you cannot attend a scheduled exam (or project presentation) whether for justified or unjustified reason you must notify me by email. Not attending an exam (or project presentation) without prior notification will result in failing the exam (or project presentation) whether the reason was justified or not. Claiming not to know the date of an exam (or project presentation) is not a valid reason and will result in failing the exam (or project presentation).
  7. Remote students outside the IIT main campus who plan to take the exam at a remote location must contact IIT online to arrange for a proctor at the remote location.


Required text

  1. Interactive Computer Graphics: A Top-Down Approach with WebGL, 7th ed., E. Angel and D. Shreiner, Addison-Wesley 2014.

Additional references

  1. WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL, K. Matsuda and R. Lea, Addison-Wesley 2013.
  2. Computer Graphics: Principles and Practice, 3rd ed. J. Hughes, A. Van Dam, et. al. Addison - Wesley, 2013.
  3. Fundamentals of Computer Graphics, 4th ed., P. Shirley et al.,A.K. Peters 2015.
  4. Computer Graphics with OpenGL, 4th ed. (or 3rd ed.), D. Hearn and M.P. Baker, Prentice-Hall, 2010.

Tentative schedule

class date topic assignment

1 08/20 Introduction to computer graphics AS0
2 08/22 Introduction to JavaScript and WebGL
3 08/27

4 08/29 Raster graphics AS1
5 09/03

6 09/05 2D modeling and viewing
7 09/10

8 09/12
9 09/17 Curve and surface representation
10 09/19

11 09/24

12 09/26 Introduction to 3D rendering AS3
13 10/01

14 10/03 Midterm
15 10/08

16 10/10 3D modeling and viewing
17 10/15
18 10/17

19 10/22 3D object representation
20 10/24

21 10/29
22 10/31 Color, Illumination models, and surface rendering
23 11/05

24 11/07

25 11/12 Global illumination AS6
26 11/14

27 11/19

28 11/21 Animation AS7
29 11/26

30 11/28 No class (Thanksgiving)
31 12/03 Final exam: PS-121   5-7pm (pending approval by registrar)


Videos of lectures

Videos of lectures are available through blackboard

    Reading materials


 Topic  Reading
 Introduction to computer graphics  Ch. 1
 Introduction to graphics programming with WebGL  Ch. 2-3
 Raster graphics  Ch. 8
 2D modeling and viewing  Ch. 4
 Curve and surface interpolation  Ch 11
 Introduction to 3D Rendering with WebGL  Ch. 4
 3D modeling and viewing  Ch. 5
 3D object representation and animation
 Ch 9
 Color, illumination models, and surface rendering  Ch. 6-7,12


For additional instructions/ hints check the FAQ page
Please submit assignments via blackboard

Assignment Description Data Weight Due date
assignment 1
raster graphics
assignment 2
2d modeling/viewing
assignment 3
spline curves/surfaces
assignment 4
3d rendering  object files 5%
assignment 5
illumination models
 object files
assignment 6
 object files 5%
assignment 7
 object files 5%

Additional assignments:

Additional information:


Learning JavaScript

See http://www.w3schools.com/js/ and https://developer.mozilla.org/en-US/docs/Web/JavaScript

We're happy to hear from you

Yes Please