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.


  • Professor: James Davis (
  • TA: Fahim Hasan Khan (
  • TA: Eric Sandoval Ruezga (
  • Tutors: Spencer Fulgham (, Valentina Tang (


MW 05:20pm-06:55pm 

Zoom requires a UCSC login to authenticate

Recordings from F21 class:

In the YuJa tab on Canvas

Recordings from S20 class and F20 class:
Stored in Google Drive (needs login) Spring20

Stored in Google Drive Fall20


Labs will be Zoom calls for the TA to introduce the programming assignments and give opportunity for students to ask questions before they start coding.  All labs will be recorded, so you can watch it later if you missed it. 

Tue 11:00am-1:00pm

Office Hours

  • Spencer Fulgham
    • Mon 3pm-4pm and Tues 5:00pm-6:30pm

Learning Outcomes

    • Primary goals
      • G1: You can create a web page with 3D computer graphics content using WebGL 
      • G2: You understand the underlying mathematics and programming for graphics
    • Secondary goals
      • G3: You can transfer your knowledge to use an alternate graphics library that wasn't the specific one we studied, to quickly recreate the quarters work (we will use three.js).
      • G4: You increase your skill working with large software systems with lots of lines of code and libraries that are too big to fully understand. (Lots of upper division classes contribute to this goal, but the practice is intentionally part of this class).
      • G5: You increase your skills at learning new coding concepts when all the precise details are not given. (Your job will require you to learn new languages and libraries as you go. This class scaffolds that learning, but also asks you to practice reading the manual for the details)


CSE101, 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%. Learning to program takes more than we explicitly teach in the prerequisites, it takes practice. If you haven't had at least 4 courses already that involved programming (CSE 20, 30, 101, and one other upper division course) the instructors suggest you get some more experience before taking this course. That is, if you are fresh out of CSE101, I suggest waiting if your schedule will allow it (but I dont require it).


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. Either book form or online is fine.

Youtube Channel

This was new in Spring20 and students reported that it was useful, so we are keeping it. There will be playlists for different topics. For example, the Assignment1 playlist has videos to walk you through the "lab" assignment. This will be linked from homework and assignments as appropriate.

Communicating with course staff

Piazza is the fastest way to get answers. The instructors, TAs, and tutors all try to keep questions answered, and frequently edit answers by other course staff with clarifications. You should expect answers in less than 24 hours on average.

Office hours is your second option for talking with course staff. There are many times during the week for you to talk to someone.

Email is discouraged because it does not scale well to lots of students and lots of instructors, nor is it fast. I sometimes take up to a week to see and respond to email.


We are using Piazza.

All announcements will be through Piazza. You must register with the class Piazza if you want to know last minute things from the instructor. 

Instructors and TA will monitor Piazza for questions. You are welcome to set up Discord or other places to chat with classmates, however we may or may not check in on those.


The schedule and linked slides will be updated from "planned" to "actual" as the quarter progresses.

There are some intentional blanks in the schedule which will be filled with either finishing past lecture topics, supplementary help for homework, or interesting advanced topics. 


Due: Lab 0, HW1, Quiz 1 (Linear Algebra)



  • Matsuda Ch 2, Ch03 (67-91)

 Due: Lab 1 - Paint Program


  • Shirley Ch 6 p135-158 - Transformation Matrices.
  • Shirley Section  2.10 (Linear Interpolation) pg42, Section 2.11 (Barycentric Coordinates) pg 43-47.
  • Matsuda  Ch 3(91-113), Ch4(115-123) Transforming

Due: HW 2, Quiz 2 (ObjectModeling, Transforms)

  • Lecture 7 (Oct 18):  Colors. 
  • Lecture 8 (Oct 20): Held in reserve since always need another slot by this point in the quarter (e.g. strike, power out, etc).


  • Matsuda  Ch 4 (pg 124-136) Animation

Due Lab 2 - Blocky Animal

  • Lecture 9 (Oct 25): Texture Mapping.
  • Lecture 10 (Oct 27):  Blocky Animal Contest! 
    Online: Watch YouTube A3.


  • Shirley - Ch 3.3 p54-56 - RGB Color
  • Matsuda - Ch 5   

Due HW 3, Quiz 3 (Color, Texture)


  • Matsuda Ch7 (About cameras and keyboard events
  • (optional: pg 276-289 about drawElements())

Due: Lab 3 - Blocky World

  • Lecture 13 (Nov 8): Shading/Lighting.
  • Lecture 14 (Nov 10): Live: Blocky World Contest
    Online: Watch YouTube A4.


  • Shirley - Ch 9 p191-200 (Shading), Ch 7 p 159-174 (Viewing)
  • Matsuda Ch8

Due: HW 4, Quiz 4 (Viewing, Projection, Lighting)


  • (Chp 6 and Appendix B are GLSL reference)

Due: Lab 4 - Lighting

Reading: (None)

Due: Quiz 5 (Cumulative), Lab assignment 5 - Three.js

Note: Holiday Thur/Fri, so things normally due on Sunday have until the following Wed.

  • Lecture 19 (Nov 29): Optional: Tell the professor how to improve class. Not optional: Take Q5. Do final lab.
  • Lecture 20 (Dec 1): Lab 5 contest.
(Prior week assignments have until this Wed Dec 1)


Your grade for CSE160 is broken down as follows:

  • Programming assignments: 45% 
  • Participation/Attendance: 5% 
  • Written HW: 10% 
  • Exams (Quizzes): 40%

Your grade for CSE-160L is simply your grade for CSE160. There is no curving, and no rounding up. You can check your grade at any time in Canvas. 

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%

Programming Assignments

There will be 6 programming assignments in Javascript and WebGL due on Sundays at 11:59pm. These are meant to insure learning outcome "G1: You can create a web page with 3D computer graphics content using WebGL".  Programming assignments have clear rubrics, and your grade should never be a surprise to you.

  • Assignment 0: Vector Library - Ch1, Ch2 9-16
  • Assignment 1: Paint Program - 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
  • Assignment 5: Exploring a High-Level Graphics Library

- 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 5% off per day and will be accepted no more than 2 weeks late.  No assignments will be accepted after the Friday before finals week.
  • No work will be counted as late until the add/drop deadline, at which point all late penalties instantly become effective from the original assignment due date. 
  • In my experience the two week limit does not hurt anyone. Students more than 2 weeks behind eventually fail anyway. This just makes it obvious to you earlier. 

- Missing Work

This is a programming class. You must turn in all Programming Assignments with a grade of at least 5/10 (before late penalty) in order to receive a passing grade. However I know stuff happens - I will allow any student to bypass this policy one time (for one programming assignment) by submitting a paragraph explaining how your life really exploded and you couldn't do it.

This does not apply to written HW or quizzes. You shouldnt miss those either of course, but they are not mandatory for passing.


Attendance in the Zoom class is "required".  There will be Google Polls referenced in class lectures. These will be used for participation points. The polls are valuable for improving the class. The "required attendance" is valuable for nudging you to come to class when that's what you wanted to do to begin with.

If you know you will need to watch recordings later, drop me an email to let me know that's your plan at the start of the quarter and we will find a solution. I am happy to accommodate people located in alternate time zones, or who have to work at the scheduled class time, or whatever your situation is. 

Written HW

You'll have some written homework problems related to the quizzes and coding assignments.  These are graded on a participation basis. If you tried, you get credit. Actually testing your knowledge is in the quizzes and code assignments. The homework is meant to make you look at the readings, get started on the assignments, and provide a sample of what will be on the exams. 

These primarily support learning outcome "G2: You understand the underlying mathematics and programming for graphics"


There will be five quizzes, to test your understanding of the material. If you can do the HW, you can do the quiz. The quizzes themselves are currently multiple choice and administered in Canvas. 

The first quiz comes almost immediately, and is a review of your knowledge of basic linear algebra.

  1. Linear Algebra Quiz - Reading: Shirley - Fundamentals of Computer Graphics - Ch 2.4-2.4.4, Ch 5.2-5.2.2

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. 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. This should be very rare with online quizzes.

Final: There is no traditional Midterm or Final Exam, just the bi-weekly quizzes.

These support learning outcome "G2: You understand the underlying mathematics and programming for graphics"


There will be programming assignment contests in this class. The winners of these contest are immortalized in the Hall of Fame! You will brag to your children of your talent! Seriously. Its just a lot of fun to see your classmates creativity. Participation in showing your own work is optional, participation in cheering for your classmates is mandatory.


Some past versions of this class had a "group project". We aren't doing that this qtr. However the programming assignments have been adjusted to allow for additional effort and creativity, and to build on each other. Its primarily the "group" aspect which has been removed from the class.


Systemwide Senate Regulation 760 specifies that one academic credit corresponds to a total of 30 hours of work for the median student over a quarter (e.g., 3 hours per week for a 10-week quarter).

That means this class is 21 hours a week! Expect to work hard on this class. Do not expect to start programming assignments on the last day. I will survey students during the quarter to check in how long different aspects of the course are taking you.

  • Lectures - 3 hours per week
  • Lab time - 2 hour per week
  • Reading - 2.5 hours per week (Roughly a chapter a week)
  • Written Homework - 2.5 hours per week (1 HW every other week)
  • Exam - 1 hour per week (1 quiz every other week)
  • Programming Assignments - 10 hours per week (A0, A1, A5 = 10 hours, A2, A3, A4 = 20 hours)
    • There is a wide distribution among students on how long a given programming assignment takes, from 5 hours to 25 hours, depending on your prior experience. Some students will be faster than you, because they put in the hours to gain experience in some prior class. Do not be discouraged, but do expect to put in the time.

Instructor Feedback

All programming assignments have a clear rubric. Your score on these will include a detailed breakdown of which points you correctly implemented. Written HW will have a solution sheet made available after its due but before the quiz, so that you can self-check your work and fill in missing knowledge. All grading is handled by the graders.

Three of the assignments will have associated contests, and there is discussion and feedback on what you've done in class from the instructor on those days. Much of this discussion arises from questions asked by other students. Many students make similar design choices in their work, so even if you aren't showing your work, questions and feedback to someone else will likely resonate with you.

Student Feedback

Student feedback is so important to me - its the dominant method by which I assess the 'Participation' part of your grade.

During the quarter you will be asked for feedback in nearly every lecture in the form of short surveys with 5-10 questions. These usually happen when we take a 5 minute break midway through class. These cover both specific topics to help the class run better as well as open ended feedback. These are informal, and provide me immediate opportunities to improve your class. You can say anything, good or bad. I won't be offended. When appropriate I share aggregate class opinions with the class. 

At the end of the quarter you will be asked to complete a Student Experience of Teaching survey for this course. SETs provide an opportunity for you to give formal feedback. These are truly anonymous and are collected by the university. I eventually get a copy, and I read these too.  The campus has a guide: CITL’s Guide to Giving Useful Feedback to Instructors and TAs.

Working with friends

Learning with friends is a good thing. Please DO form study groups for HW. Please DO call your friend for help debugging Assignments. However just to be clear - quizzes are a personal endeavor, no contact with other people allowed. Use of the web and textbooks IS allowed on the quizzes. All HW and Assignments should be your own work. There is a fuzzy line on how much help is too much. If you got help from anyone who isn't course staff on any HW or coding, you are required to state who and the extent of the help clearly. If you had a study group of 5 people in discord for the HW, you need to say that on your HW. Any collaboration you clearly document will never be considered "cheating". Of course, you won't get credit if you clearly say "My roommate did all this for me", but you won't be cheating. 

This policy is specific to this class. Each instructor has their own rules. See the section below on Academic Integrity for official university policy.


  • I need a permission code
    • I dont get these until week 2 or 3 of the qtr. Before the add deadline, but not in the first week. Just come to class.
  • I am on the waitlist. I wish I was on the waitlist.
    • CSE160L is required to CSE160, so CSE160L serves as the waitlist. It has always cleared. Come to class, do the first assignment, and then by week 3 we have space to get everyone in who wants it. In fact due to the online nature this term, I am 100% sure we can get everyone in, unlike a physical classroom.
  • I hate my other class and want to add this one after the qtr started.
    • Sure, we would love to have you. All lectures and assignments are available online. But scroll down and check the late/missing work policies. In particular you probably missed one quiz already and you have at least one programming assignment due by the add deadline if you want to pass. 
  • DRC
    • Yes. Send your official form to me with CC to TA Eric. If your accommodations are limited to exam time we will set it up for all quizzes happening more than 48 hours in the future. If your accommodations are more complex, then chat with me in office hours.

Official University Policies

The sections below are mandatory in all syllabus, and represent policy that should be identical in every UCSC class. While the below is important, it isn't unique to this class.

Academic Integrity

All members of the UCSC community benefit from an environment of trust, honesty, fairness, respect, and responsibility. You are expected to present your own work and acknowledge the work of others in order to preserve the integrity of scholarship. 

Academic integrity includes:

  • Following exam rules
  • Using only permitted materials during an exam
  • Viewing exam materials only when permitted by your instructor 
  • Keeping what you know about an exam to yourself
  • Incorporating proper citation of all sources of information
  • Submitting your own original work 

Academic misconduct includes, but is not limited to, the following:

  • Disclosing exam content during or after you have taken an exam
  • Accessing exam materials without permission
  • Copying/purchasing any material from another student, or from another source, that is submitted for grading as your own
  • Plagiarism, including use of Internet material without proper citation
  • Using cell phones or other electronics to obtain outside information during an exam without explicit permission from the instructor
  • Submitting your own work in one class that was completed for another class (self-plagiarism) without prior permission from the instructor.
  • Violations of the Academic Integrity policy can result in dismissal from the university and a permanent notation on a student’s transcript. For the full policy and disciplinary procedures on academic dishonesty, students and instructors should refer to the Academic Misconduct page at the Division of Undergraduate Education.


UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me privately during my office hours or by email, preferably within the first two weeks of the quarter. At this time, I would like us to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact the DRC by phone at 831-459-2089 or by email at

Intellectual Property

The materials in this course are the intellectual property of their creators. As a student, you have access to many of the materials in the course for the purpose of learning, engaging with your peers in the course, completing assignments, and so on. You have a moral and legal obligation to respect the rights of others by only using course materials for purposes associated with the course. For instance, you are not permitted to share, upload, stream, sell, republish, share the login information for, or otherwise disseminate any of the course materials, such as: video and audio files, assignment prompts, slides, notes, syllabus, simulations, datasets, discussion threads. Conversely, any materials created solely by you (for example, your videos, essays, images, audio files, annotations, notes) are your intellectual property and you may use them as you wish.

Religious Accommodations

UC Santa Cruz welcomes diversity of religious beliefs and practices, recognizing the contributions differing experiences and viewpoints can bring to the community. There may be times when an academic requirement conflicts with religious observances and practices. If that happens, students may request the reasonable accommodation for religious practices. The instructor will review the situation in an effort to provide a reasonable accommodation without penalty. You should first discuss the conflict and your requested accommodation with your instructor early in the term. You or your instructor may also seek assistance from the Dean of Students office.

Principles of Community

The University of California, Santa Cruz expressly prohibits students from engaging in conduct constituting unlawful discrimination, harassment or bias. I am committed to providing an atmosphere for learning that respects diversity and supports inclusivity. We need to work together to build this community of learning. I ask all members of this class to:

  • be open to and interested in the views of others
  • consider the possibility that your views may change over the course of the term
  • be aware that this course asks you to reconsider some “common sense” notions you may hold
  • honor the unique life experiences of your colleagues
  • appreciate the opportunity that we have to learn from each other
  • listen to each other’s opinions and communicate in a respectful manner
  • keep confidential discussions that the community has of a personal (or professional) nature
  • ground your comments in the texts we are studying. Refer frequently to the texts and make them the focus of your questions, comments, and arguments. This is the single most effective way to ensure respectful discussion and to create a space where we are all learning together.

Title IX/Care Advisory

UC Santa Cruz is committed to providing a safe learning environment that is free of all forms of gender discrimination and sexual harassment, which are explicitly prohibited under Title IX. If you have experienced any form of sexual harassment, sexual assault, domestic violence, dating violence, or stalking, know that you are not alone. The Title IX Office, the Campus Advocacy, Resources & Education (CARE) office, and Counseling & Psychological Services (CAPS) are all resources that you can rely on for support.

Please be aware that if you tell me about a situation involving Title IX misconduct, I am required to share this information with the Title IX Coordinator. This reporting responsibility also applies to course TAs and tutors (as well to all UCSC employees who are not designated as “confidential” employees, which is a special designation granted to counselors and CARE advocates). Although I have to make that notification, you will control how your case will be handled, including whether or not you wish to pursue a formal complaint. The goal is to make sure that you are aware of the range of options available to you and that you have access to the resources you need.

Confidential resources are available through CARE. Confidentiality means CARE advocates will not share any information with Title IX, the police, parents, or anyone else without explicit permission. CARE advocates are trained to support you in understanding your rights and options, accessing health and counseling services, providing academic and housing accommodations, helping with legal protective orders, and more. You can contact CARE at (831) 502-2273 or

In addition to CARE, these resources are available to you:

Difficult Conversations

In our in-class and online discussions and dialogues, we will have the opportunity to explore challenging, high-stakes issues and increase our understanding of different perspectives. Our conversations may not always be easy. We sometimes will make mistakes in our speaking and our listening. Sometimes we will need patience or courage or imagination or any number of qualities in combination to engage our texts, our classmates, and our own ideas and experiences. We will always need respect for others. Thus, an important aim of our classroom interactions will be for us to increase our facility with difficult conversations that arise inside issues of social justice, politics, economics, morality, religion, and other issues where reasonable people often hold diverse perspectives. This effort will ultimately deepen our understanding and allow us to make the most of being in a community with people of many backgrounds, experiences, and positions.

Report an incident of hate or bias

The University of California, Santa Cruz is committed to maintaining an objective, civil, diverse and supportive community, free of coercion, bias, hate, intimidation, dehumanization or exploitation. The Hate/Bias Response Team is a group of administrators who support and guide students seeking assistance in determining how to handle a bias incident involving another student, a staff member, or a faculty member. To report an incident of hate or bias, please use the following form: Hate/Bias Report Form

Student Services

Counseling and Psychological Services

Many students at UCSC face personal challenges or have psychological needs that may interfere with their academic progress, social development, or emotional wellbeing. The university offers a variety of confidential services to help you through difficult times, including individual and group counseling, crisis intervention, consultations, online chats, and mental health screenings. These services are provided by staff who welcome all students and embrace a philosophy respectful of clients’ cultural and religious backgrounds, and sensitive to differences in race, ability, gender identity and sexual orientation.


Student Success and Engagement Hub

The Division of Student Success provides campus-wide coordination and leadership for student success programs and activities across departments, divisions, the colleges, and administrative units. 


Tutoring and Learning Support

At Learning Support Services (LSS), undergraduate students build a strong foundation for success and cultivate a sense of belonging in our Community of Learners. LSS partners with faculty and staff to advance educational equity by designing inclusive learning environments in Modified Supplemental Instruction, Small Group Tutoring, and Writing Support. When students fully engage in our programs, they gain transformative experiences that empower them at the university and beyond.


Slug Support Program

College can be a challenging time for students and during times of stress it is not always easy to find the help you need.  Slug Support can give help with everything from basic needs (housing, food, or financial insecurity) to getting the technology you need during remote instruction. 

To get started with SLUG Support, please contact the Dean of Students Office at 831-459-4446 or you may send us an email at


Slug Help/Technology 

The ITS Support Center is your single point of contact for all issues, problems or questions related to technology services and computing at UC Santa Cruz. To get technological help, simply email 


On-Campus Emergency Contacts

Slug Help/Emergency Services. For all other help and support, including the health center and emergency services, start here. Always dial 9-1-1 in the case of an emergency. 


Course Summary:

Date Details Due