CS 418: Interactive Computer Graphics

Spring  2017

Tu/Th     9:30  10:45 am,
Room 1404 Siebel Center

University of Illinois at Urbana-Champaign,
Department of Computer Science
Instructor : Eric Shaffer
Office: 2103 Siebel Center
Office Hour: Th. 2:30-3:30pm or by appointment

Lecture Videos: Are available at this link [VIDEO LINK]

Book:  There is no book for the class. Notes and other materials will be posted online.

Piazza: This term we will be using Piazza for class discussion. Rather than emailing questions to the teaching staff, we encourage you to post your questions on Piazza. Find our class page at: https://piazza.com/illinois/fall2017/cs418

Discussion Website:  https://courses.engr.illinois.edu/cs418/discussion_content_Spring2017/discussion.html

TA Office Hours:

Apollo Ellis - Tuesday 2:00-3:00pm SC 3238A

Ryan Freedman - Wednesday 12:00-1:00pm SC 0207

Russell Michal -  Tuesday 12:15-1:15pm SC 0207

Mary Pietrowicz - Friday 2:00-3:00pm SC 0207

Grading: The course grade for the class is broken down among the following items:

Machine Problem 1  15%
Machine Problem 2  15%
Machine Problem 3  15%
Machine Problem 4  10%
Exam 1  15%
Exam 2   15%
Exam 3  15%






Machine Problems: There will be 4 machine problems during the semester. Assignments will be announced in class and on Piazza. Homework submission will be done electronically through Compass. The required files and acceptable file formats for submission will be specified in the assignment.

Exams: There will be three exams. If possible we will use the Computer Based Testing FacilityThe APPROXIMATE dates of the exams will be the weeks of Feb. 20, March 14, and April 24.

Late Homework or Projects: Machine problems submitted after the due date lose 10% per day. In exceptional circumstances where extension may be reasonable (illness, family emergency etc.) arrangement must be made with the instructor.

Collaboration: You should collaborate on the MPs. You should not copy code verbatim from each other or the web. 

Software:  We will use HTML/JavaScript/WebGL and GLSL for the programming assignments. No prior knowledge of these is required for the class.

Commenting Code: All files, classes, methods and properties should be documented with JSDoc comments with the appropriate tags and types.
                                  Details can be found in the Google JavaScript Style Guide.

Other Policies: Do not make class material publicly available. This includes copies of lectures, homework, solutions, handouts, and code provided by us.

4 Credit Option: If you are taking the course for 4 credits, you will complete extra work on Machine Problems 2 through 4.

Language References and Resources

Tentative Schedule (Note that slides and topics for future lectures may change):

Date Topic Materials Assignments
1/17 Introduction



  • Lecture 1: Introduction [PDF]
  • Lecture 2: Introduction to WebGL [PDF]

Chapter 5: 2D Transformational Geometry
by John Hart [PDF]


Vertex Shaders
Fragment Shaders

Chapter 6: 3D Transformational Geometry
by John Hart [PDF]


2D Affine Transformations
3D Affine Transformations

  • Lecture 4:  2D Transformations for Computer Graphics [PDF]
  • Lecture 5: More Mathematics for Computer Graphics [PDF]


Geometry in WebGL

In-class Worksheet 1 [PDF]
Solution [PDF]
MP1 Due Feb. 10 [link]


Basic Animation



  • Lecture 8: Introduction to GLSL [PDF]​


In-class Worksheet 2 [PDF]
Solution [PDF]

Chapter 7: Modeling Transformations
by John Hart [PDF]

2/2 Modeling and Viewing

Chapter 8: Viewing
by John Hart [PDF]

In-class Worksheet 3 [PDF]
Solution [PDF]


Orthographic Projection






Perspective Projection

  • Lecture 12: Projection [PDF


2/14 Basic Shading
  • Lecture 13: Basic Shading [PDF]

In-class Worksheet 4 [PDF]
Solution [PDF]
Special Bonus Worksheet [PDF]
Solution [PDF]


Transforming Normals

Simple Mesh Generation

In-class Worksheet 5 [PDF]
Solution [PDF]

2/21 No Class


2/23 Terrain Generation

In-class Worksheet 6 [PDF]
Solution [PDF]  

In-class Worksheet 7 [PDF]
Solution [PDF]


Simple Interaction


  • Lecture 19: Quaternions [PDF]

MP 2 Part 1 Due March 6 [link]

3/2 Clipping
  • Lecture 20: Clipping [PDF]
In-class Worksheet 8 [PDF]
Solution [PDF]
Chapter 13: Images
by John Hart [PDF]
  • Lecture 21: Color [PDF]
In-class Worksheet 9 [PDF]
Solution [PDF]

Alpha Blending in WebGL

  • Lecture 22: Blending [PDF]

MP 2 Part 2 Due March 17 [link]

In class Worksheet 10 [PDF]
Solution [PDF]

Read Chapter 14: Rasterization
by John Hart [PDF]

3/14 Rasterization
  • Lecture 23: Rasterization [PDF]

In class Worksheet 11 [PDF]


No Class 




Spring Break



3/23 Spring Break 

3/28 Texture Mapping Read Chapter 15&16: Texture Mapping
by John Hart [PDF]

In class Worksheet 12 [PDF]
Solution [PDF]
3/30 Texture Filtering
  • Texture Filtering [PDF]

Mipmapping [PDF]
(taken from Essential mathematics for games and interactive applications : a programmer's guide by James Van Verth) 

Read Section 9.8

MP 3 Part 1: Due April 10 at 11:59 [link]

4/4 Environment Mapping
  • Environment Mapping [PDF]

In class Worksheet 13 [PDF]
Solution [PDF]
4 Credit Students MP 2 Extension: Due April 14 at 11:55 [link]

4/6 Bump Mapping
  • Bump Mapping [PDF]
4/11 Bezier Curves and Surfaces
  • Bezier Curves [PDF]
Read Chapter 4 Curves and Surfaces for CAGD: A Practical Guide 

by Gerald Farin


MP3 Part 2: Due April 18 at 11:55 [link


Bezier Curves and Surfaces

  • Bezier Surfaces [PDF]
Read Bezier Techniques by Dianne Hansford [PDF]

Mesh Processing

  • Mesh Processing [PDF]

Worksheet 15 [PDF]
Solution [PDF]

Worksheet 14 [PDF]
Soultion [PDF]

4/20 Subdivision Surfaces
  • Subdivision Surfaces [PDF]
MP4: Due May 3 at 11:55pm [link]
4 Credit Students MP4 Addition: Due May at 11:55pm [link]
4/25 A Simple Physics Engine
  • Game Physics [PDF]

Read Chapter 3 Game Physics Engine Development
by Ian Millington [PDF]

Worksheet 16 [PDF]
Solution [PDF]

4/27 No Class 




No Class

(Good luck on your exams)