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.

Staff

Lectures

MW 05:20pm-06:55pm 

Instead of Zoom we are going to use an alternate platform. Several instructors have told me their students like it better. I will survey whether to go back to Zoom in the third week or so.

https://ucsc.zoom.us/j/99271638289?pwd=b3k3cHVXbVozcGIreU03OVFtbXdZQT09

(Switching to Zoom next Monday.. link coming soon.)

Recordings from this quarter: (requires UCSC Google Login)

https://drive.google.com/drive/u/2/folders/1Y7OfDaRzpeDQbrAFL0a2q6We7JENVDyY

Also stored in Yuja.

Recordings from previous quarters:

Labs

Labs will be conducted in virtual small groups. Past students tell me they like meeting other students in the class. In half the lab times you will have work time on the written HW, as well as Q&A with the TA.  The other half of lab times you will work in a small group on some short well scripted programming examples which either introduce or extend the ideas you need for your primary assignments.  You pick one of the lab times that works for you, and ideally attend the same one each week.

  • Tuesdays: 9:50am - 11:25am (Fahim, Vincent)
  • Thursdays: 3:20pm - 4:55pm (Fahim, James)

You can attend the labs here: https://ucsc.zoom.us/j/97436405199?pwd=WStqWWNIZU4vcCtKSGxPbFFLM1FYZz09

Office Hours

  • James Davis:
    • Short class questions: Immediately after class for 15 minutes on Mon, stay in the call
    • Longer questions : After class Wed
    • More personal questions and issues: ??
  • Vincent Titterton

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 quarter's 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)

Prerequisites

CSE101, MATH21 or AMS10.

This course is a 7-unit course with the lab (It used to be 5+2 with the lab in a separate course number). 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 don't require it).

Textbook

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

There are 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.

https://www.youtube.com/channel/UCSynd9Z5RdIpKfvTCITV_8A/playlists

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 emails.

Announcements/Discussion

We are using Piazza.

https://piazza.com/ucsc/fall2022/cse160

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. 

Many students prefer Discord for informal discussion and chat. The class Discord is is linked below. Sometimes a TA might be looking here and reply, and sometimes not. You are required to be respectful of your classmates and TAs as people.  However dont feel the need to be overly formal like you would if emailing a professor, it is intended to be an informal community of students in the class, including things like griping about the class' unfair policies or workload, and bragging about your amazing accomplishments if you feel the need.

Note: You may be aware that there is an official CSE Discord Server; this is not that server. This discord server is specifically for this class, as many students tend to prefer.

Discord's Branding Guidelines  https://discord.gg/KyA7QJZk8r

Schedule

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

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

Reading:

Due: Asgmt0, HW1, Quiz 1 (Linear Algebra)

 

  • Lecture 3 (Oct 3): Object Modeling, triangles and meshes.
  • Lecture 4 (Oct 5): ?? (Actual - finish Object Modeling Lecture, Discuss Research Papers)
    Watch the YouTube videos for Asg1
  • Lab Week 2 - Lab Activity 1 : Tangrams (note for next time, move after Transforms lecture, with A2)

Reading:

  • Matsuda Ch 2, Ch03 (67-91)

 Due: Lab1, Asgmt1 - Paint Program

Reading:

  • 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 17):  Colors. (Actual, moved Lecture 18 on Jobs and Grad school forward to this date) 
  • Lecture 8 (Oct 19): -- Held in reserve since always need another slot by this point in the quarter (e.g. strike, power out, etc).
  • Lab Week 4 - Lab Activity 2: Performance

Reading:

  • Matsuda  Ch 4 (pg 124-136) Animation

Due Lab 2, Asgmt2 - Blocky Animal

  • Lecture 9 (Oct 24): Texture Mapping.
  • Lecture 10 (Oct 26):  Blocky Animal Contest! 
    Online: Watch YouTube A3.
  • Lab Week 5 - Group work on HW3

Reading:

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

Due HW 3, Quiz 3 (Color, Texture)

Reading:

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

Due: Lab 3, Asgmt3 - Blocky World

  • Lecture 13 (Nov 7): Shading/Lighting.
  • Lecture 14 (Nov 9): Live: Blocky World Contest
    Online: Watch YouTube A4.
  • Lab Week 7: Group work on HW 4

Reading:

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

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

Reading:

  • (Chp 6 and Appendix B are GLSL reference)

Due: Lab4, Asgmt4 - Lighting

Due: Lab 5
  • Lecture 19 (Nov 28): Class Summary -  Q&A - Tell the professor how to improve class. 
  • Lecture 20 (Nov 30): Lab 5 contest.
  • Lab Week 10: No lab in last week

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

(Note these are due on the last class, a Wednesday, instead of the usual Sunday)

Grading

Your grade for CSE160 is broken down as follows:

  • Programming assignments: 40% 
  • Lab Section programming activities: 7.5%
  • Participation/Attendance: 5% 
  • Written HW: 7.5% 
  • Exams (Quizzes): 40%

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 ensure the 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 until the end of the second week, 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 Programming Assignment implies Fail Class

This is a programming class. You must turn in all Programming Assignments with a grade of at least 6/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. You submit this explanation as your assignment AND email the prof.

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

Participation/Attendance

Attendance in the lecture 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. 

Attendance in Lab sections is "required"  because working with your classmates is educational (either you are learning from them, or you are learning to teach). These can't be recorded, so there will be an opt-out method for those who can not attend.

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"

Exams

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"

Self-check quizzes

There may be "check that you were awake in class" quizzes following some lectures. These are not meant to be "exams", and you can retake these multiple times until you are happy with your score. 

Contests

There will be programming assignment contests in this class. The winners of these contests are immortalized in the Hall of Fame! You will brag to your children of your talent! Seriously. It's 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.

Project

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. It's primarily the "group" aspect that has been removed from the class project.

Workload

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 in this class. Do not expect to start programming assignments on the last day. I will survey students during the quarter to check 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. You will be forced to work together in Lab sections. 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.

FAQ

  • 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.
    • The waitlist 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.
    • Nope. I already let the whole waitlist in, so the class is already bigger than it was meant to be. If you want in this class you should be on the waitlist at the start of the qtr. 
  • DRC
    • Yes. Send your official form to me with CC to the TA. 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.
    • Contact Minghao Liu (mliu40@ucsc.edu

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.

Accessibility

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 drc@ucsc.edu.

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 care@ucsc.edu.

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 deanofstudents@ucsc.edu.

 

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 help@ucsc.edu. 

 

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