Course Syllabus

Introduction

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.

Prerequisites

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

People

Professor: James Davis (davis@cs.ucsc.edu)

TA: Lucas Ferreira (lferreira@ucsc.edu)

TA: James Iwamasa (jiwamasa@ucsc.edu)

Office Hours

James Davis: 11:30-12:30 Tues, 11:00am-12:00pm Thursdays, E2-363

Lucas Ferreira: 10:00am-11:00am Wednesdays, BE119

Textbooks

Interactive Computer Graphics: A top-down approach with WebGL, 7th edition
Angel and Shreiner

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

Lecture

TuTh 8:00am-9:35am Physical Sciences 114

Lecture Schedule

  1. Introduction to Class
  2. Linear Algebra Review, Working in WebGL and Canvas elements
  3. Object Modeling, triangles, meshes
  4. Assignment 2, Generalized Cylinders, Quiz 1
  5. Shading, Lighting
  6. Assignment 3, Color Perception
  7. Transforms
  8. Quiz 2
  9. Hosted on Zoom: Asg5
  10. Projections, View vs World, Object coordinates, Picking
  11. Assignment 5, Picking
  12. Quiz 3
  13. Assignment 6, Visibility
  14. Texture Mapping
  15. Assignment 7
  16. Quiz 4
  17. Assignment 8, Displays
  18. Bump Mapping, Normal Mapping, Environmental Mapping
  19. Ray Tracing
  20. Sampling

Labs

Tue 9:50am-11:25am BE109

Thu 11:40am-1:15pm BE109

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.

Grading

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

  • 4 Quizzes: 10% each (total 40%)
  • 8 Programming assignments: (total 60%)

Your grade for CMPS-160L is simply your grade for all the programming assignments in CMPS-160 (there are no additional assignments for CMPS-160L):

  • 8 Programming assignments: (total 100%)

Programming assignments are broken up into several points, each with equal weight. Your grade for the programming assignment is then calculated by the number of points you completed for that assignment. Points from previously due assignments can still be attempted, but with a late penalty (see below).

Points are also split between "required" and "extra" points. A student who completes all of the "required" points will pass the assignment portion of this course, but to get a higher grade, some "extra" points must also be completed.

In terms of final grades, doing all of the "required" points will get you a 2.0 (on a 4.0 GPA scale). Each "extra" point you do per assignment is an extra 0.5 on top of that (up to a limit of 4.0 total per assignment). So, doing about 2 "extra" points on time on each assignment will get you a B, and doing 4 "extra" points will get you an A. Each "required" point you miss subtracts 0.5 from your grade for that assignment, but note that you need to have done all of the "required" points by the end of the course to pass the class.

The grade breakdown is as follows:

A = 3.70-4.00 grade points (about 4 extra each time)
A- = 3.40-3.70 grade points (about 3 extra each time)
B+ = 3.10-3.40 grade points
B = 2.80-3.10 grade points (about 2 extra each time)
B- = 2.50-2.80 grade points (about 1 extra each time)
C+ = 2.25-2.50 grade points
C = 2.00-2.25 grade points  (exactly required each time)
D = 1.50-2.00 grade points  (miss one required each time)
F = 0.0- 1.5 grade points

Assignment Submissions

Assignments will be submitted on Canvas as zipped project folders containing all of the necessary HTML/Javascript/Shader code. Along with the Canvas submission, assignments will also be live hosted on the your own UCSC account HTML web front, so that you can view each other's work (how to do this will be gone over in the labs).

Assignments are always turned in weekly. That is, each week only one submission will be checked for each student. In your assignment submission, you must state which points you are attempting. Any points not listed will not be graded. You may attempt points for later assignments (doing them early), as well as points from previous assignments (doing them late, with a late penalty).

See the submission guide in the 'Modules' tab for more details and an example.

Assignment Late Policy

On a submission, if a student attempts a point that was assigned in a previous assignment, for each week late it is, the point loses 20% value. No assignments will be accepted after the Friday before finals week.

Assignments

There will be 8 programming assignments in Javascript and WebGL due weekly:

  1. Working with basic Javascript and HTML Canvas elements. (Due Friday, April 13 at 11:59pm)
  2. Drawing a wire frame from vertices. (Due Friday, April 20 at 11:59pm)
  3. Flat shading and surface normals. (Due Friday, April 27 at 11:59pm)
  4. Smooth shading and ambient + specular lighting. (Due Friday, May 4 at 11:59pm)
  5. Object picking and multiple light sources. (Due Friday, May 11 at 11:59pm)
  6. 3D transformations (rotation, scaling, and translation). (Due Friday, May 18 at 11:59pm)
  7. Camera movement in 3D. (Due Friday, May 25 at 11:59pm)
  8. Texture mapping and bonus features. (Due Friday, June 1 at 11:59pm)

Each assignment builds on top of the previous ones. In technical terms, you will generally need the "required" points from the previous assignment to properly do the "required" points for the next assignment.

Quizzes

There will be biweekly, in-class quizzes to test your understanding of the material. In the week leading up to the quiz, sample problems similar to the ones that will appear on the quiz will be gone over in class. There will be no midterm or final.

  1. Quiz 1 (April 12)
  2. Quiz 2 (April 26)
  3. Quiz 3 (May 10)
  4. Quiz 4 (May 24)

Make-Up Policy: If you miss a 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