Introduction to Computer Graphics

Introduction to Computer Graphics


In this course students will be introduced to the basics of computer graphics, including how to define objects with vertices and meshes, how to write basic shaders, lighting and shading, projections, transformations in 3D, and texture mapping. Assignments will be done using Javascript and WebGL, and will build on each other.


CMPS101, MATH21 or AMS10. Concurrent enrollment in CMPS160L lab section is required.

This course is a 7-unit course with the lab. It involves significant programming, in 3 different languages: HTML 5%, javascript 80%, GLSL 15%. If you haven't had at least 4 courses already that involved programming, the instructors suggest you get some more experience before taking this course. That is, if you are fresh out of CMPS101, I suggest waiting (but I dont require it).


Professor: James Davis (

TA: Lucas Ferreira (

Tutors: Alfredo Rivero, Gigi Bachtel

Office Hours

James Davis:

  • Tues: Immediately after class until 2:30pm (or no more people want to talk) in College 8 Cafe.
  • Thur: 2:30-3:30pm - E2  Rm 363

Lucas Ferreira: Fridays 2-4pm, BE-153A.

Alfredo Rivero: Thursdays 3:20-4:20pm, Saturdays 1-2pm Earth & Marine B214

Gigi Bachtel: Wednesdays 11am-1pm, S&E Library 328 (Make-up office hours Sunday 3/8 10 am - 12 pm at S&E 328)


WebGL programming guide: interactive 3D graphics programming with WebGL
Kouichi Matsuda and Rodger Lea

The assignments follow the flow of this book closely, and I assume you are reading the chapters. You'll want a copy. 

Youtube Channel

When I need to post videos, they will go in this class channel


TuTh 11:40AM-01:15PM Rachel Carson 240

Webcast U: cse-160-1 P: cse160

Lecture Schedule

(This may adjust somewhat)

Lecture 1 (Jan 7): Introduction to Class (Slides)
Lecture 2 (Jan 9): Linear Algebra Review, Assignment 1 Intro. (Reading: Shirley - Fundamentals of Computer Graphics - Ch 2.4-2.4.4, Ch 5.2-5.2.2
Lecture 3 (Jan 14): Quiz 1 - Linear Algebra (Intro to Javascript Slides)
Lecture 4 (Jan 16): Object Modeling, triangles and meshes. (Slides)
Lecture 5 (Jan 21): Transformations. (Slides) (JavaGame)
Lecture 6 (Jan 23): Colors. (Slides)
Lecture 7 (Jan 28):  Texture Mapping. (Slides)
Lecture 8 (Jan 30): Projection. (Slides)
Lecture 9 (Feb 4): Review Sample Questions Midterm
Lecture 10 (Feb 6): Midterm - Covers (Linear Algebra, Modeling, Transformations, Color Models, Textures)
Lecture 11 (Feb 11):  ?? (strike/research videos)??
Lecture 12 (Feb 13): Visibility. (Slides)   -> Strike
Lecture 13 (Feb 18): Shading/Lighting. (Slides- > Projection
Lecture 14 (Feb 20): (no class - professor travel)
Lecture 15 (Feb 25): Displays.  (Slides-> Visibility
Lecture 16 (Feb 27): Sampling Theory (Slides) -> Shading Lighting
Lecture 17 (Mar 3): Ray Tracing. (Slides) -> Displays
Lecture 18 (Mar 5): About grad school / How to improve class 
Lecture 19 (Mar 10): Sample Problems for Final -> RayTracing
Lecture 20 (Mar 12): Demo Day or Research Videos or Sample Problems
Lecture 21 (Final Time Slot): Final


Mondays, 09:00AM-11:00AM, Soc Sci I Windows Lab 135

Mondays, 11:00AM-01:00PM, Soc Sci I Windows Lab 135

Lab attendance is required, as important content regarding the more technical aspects of the assignments will be gone over during the lab sections. Each week there are two lab sections, which will cover identical material. You are free to attend whichever one you like, however, if the room is full, priority is given to those actually enrolled in that section.


Your grade for CMPS-160 is broken down as follows:

  • Linear Algebra Quiz: 10% 
  • 2 Exams (Midterm/Final): 30%
  • 4 Programming assignments: 40%
  • Attendance: 5%
  • Written HW: 7.5%
  • Research reading journal 7.5%

Your grade for CMPS-160L is simply your grade for CMPS160. The grade breakdown is as follows:

A+ = 100-97.00%
A = 96.99-93%
A- = 92.99-90%
B+ = 89.99-87% 
B = 86.99-83% 
B- = 82.99-80%
C+ = 79.99-77%
C = 76.99-70%  
D = 69.99-60%  
F = 59.99-0%


There will be 4 programming assignments in Javascript and WebGL due on Mondays at 11:59pm:

Assignment 1: Paint Program - Ch1, Ch2, Ch3 67-91
Assignment 2: Block 3D Animal - Ch3 91-113, Ch4
Assignment 3: Virtual World - Ch5, Ch 7
Assignment 4: Lighting and GLSL Shaders - Ch6, Ch8

- Submissions

Assignments will be submitted on Canvas as zipped project folders containing all of the necessary HTML/Javascript/Shader code. 

- Late Policy

Late submissions of assignments will be penalized 20% off per week and will be accepted no more than 2 weeks late.  No assignments will be accepted after the Friday before finals week.

Quiz and Exams

There will be one quiz, one Midterm exam and one Final exam to test your understanding of the material. Prior to the quiz/exam, sample problems similar to the ones that will appear on the quiz/exam will be distributed. 

  1. Linear Algebra Quiz

     Reading: Shirley - Fundamentals of Computer Graphics - Ch 2.4-2.4.4, Ch 5.2-5.2.2

  2. Midterm

  3. Final

Make-Up Policy: If you miss an exam/quiz without informing us beforehand, you can make it up within the following week (no later), however, your grade on the make-up is cut in half (contact one of the TAs or the professor to organize). That is, if you get an 80/100 on the make-up, your actual score will be 40. If you know you will need to miss a quiz you need to get in touch at least 48 hours in advance to make arrangements.


Course Summary:

Date Details Due