CS180 / CS280: Introduction to Computer Graphics

Fall 2022

Important Note and Disclaimer from the Instructor

Due to the similarity of contents between CS180 and previous iterations of CS280, from winter 2021, CS280 will be co-listed with CS180. Now CS280 has exactly the same content and grading rubrics as CS180. It is NOT an advanced / complementary version of CS180, but is just for graduate students to enroll. Meanwhile, the CS180 course remains unchanged (except adjustments and improvements by the instructor).

For those who wants to learn more in rendering, CS291A and CS190I are what you need.

Course Description
[Shadows Demo by NVIDIA]
[Pen Tool in Adobe Photoshop]
[Whitted Style Ray Tracing]
[Fluid Simulation by Muller et al.]

This course is an introduction to the foundations of three-dimensional computer graphics. Topics covered include 2D and 3D transformations, Rasterization based interactive 3D graphics, shading and reflectance models, texture mapping, geometric modeling using Bézier and B-Spline curves, ray tracing, and animation. There will be an emphasis on both the mathematical and geometric aspects of graphics, as well as the ability to write fully functional 3D graphics programs.

Pre-requisites for the course:
Linear algebra, C++ Programming, Algorithm, Data Structure

Instructor's Announcement

Welcome to the CS180, Introduction to Computer Graphics! In this course, you will learn almost everything about MODERN topics in Computer Graphics. You don't have to write any GPU code, such as OpenGL and its shading language GLSL, so you can focus on the ideas and algorithms rather than painful GPU implementation and debugging. That being said, we do require C++ programming, which is difficult to replace for its high performance and handy libraries.

We are also aware that not all the students are clear what this course is about. Mostly, there's confusion between this Computer Graphics course and other Computer Vision courses. We suggest that you read the syllabus below, to find whether this is the course that you are looking for. Basically, this course does not involve any "guesses", so it is not related to Machine Learning and Data Science. It is about understanding the mechanics that the real world and the computers generate and represent visual information. This course is not about how to use tools to create 3D scenes like an artist either, but it will tell you the science behind these tools to make animations and movies.


Lingqi Yan
Email: lingqi@cs.ucsb.edu
Office hour: Mondays 1:00 PM - 1:45 PM (PT), HFH 2119

Teaching Assistants

Lara Floegel-shetty
Email: lfloegelshetty@ucsb.edu
Office hour: Tuesdays 11:00 AM - 12:00 PM (PT), Trailer 936

Jack Kilgore
Email: jkilgore@ucsb.edu
Office hour: Thursdays 3:00 PM - 4:00 PM (PT), CSIL

Sign up on Piazza for course announcements, discussion and Q/A!

Time and Locations

Tuesdays and Thursdays
9:30 AM - 10:45 AM (PT), BUCHN 1920

Discussion Sections:
11:00 AM - 11:50 AM (PT), PHELP 1444

Note: The lectures will be in person, and they will not be recorded.

Books Recommended

There are no required textbooks for this course. The lecture slides and discussion materials will be your main references. Other related reading materials will be available to access from this course website before lectures.

Optional references:
Steve Marschner and Peter Shirley, "Fundamentals of Computer Graphics", 3rd or later edition. (Recommended as "Reading" of each lecture)
Tomas Akenine-Möller et al., "Real-Time Rendering", 3rd or later edition. (Electronic version of the 4th edition is available in UCSB library.)

Assignments and Grading

Your assignments are weekly, mostly programming tasks. We have optimized your implementation workload, so you are usually expected to write NO MORE THAN 20 LINES OF CODE per week. Besides, we provide code skeleton for each assignment, along with a pre-configured Ubuntu virtual machine for you to get started smoothly.

All assignments are due by 11:59PM PT on the dates specified. You should plan ahead. Each late day will cause a 10% off the final score of the corresponding assignment. We will use Gauchospace for submissions. Detailed submission guidelines will be in the assignment descriptions.

You will work on the assignments individually. Each assignment takes 8% of your final grade.

There will be one midterm exam and one final exam. Both exams are in written form and will be taken in person (detail TBD as the quarter proceeds). Each exam takes up 18% of your final grade. And the contents of the two exams will not overlap.

There will be no final projects of this course. However, in case of an unexpected shutdown, the exams may have to be canceled. We will replace any missing exam(s) with a final project. You will be working on this project individually. And the topic of the project can be arbitrarily selected from all the topics covered in this course.

Course Syllabus

Here's a tentative schedule. Due to the pandemic, it is relatively fluid and may change (quite frequently) as the quarter progresses.

Week Date Topics
1 Sep 22 Overview of Computer Graphics [Slides]
2 Sep 27 Vectors and Linear Algebra [Slides]
Reading: Chapter 2 (Miscellaneous Math) and Chapter 5 (Linear Algebra)
Sep 29 Transformation 1 (2D Transformations) [Slides]
Reading: Chapter 6 (Transformation Matrices), Sections 6.1 and 6.3
3 Oct 4 Transformation 2 (3D Transformations and Viewing) [Slides]
Reading: Chapter 6 (Transformation Matrices), Sections 6.2, 6.4 and 6.5;
Chapter 7 (Viewing), Sections 7.1 and 7.2
Oct 6 Transformation 3 (Projection) [Slides]
Reading: Chapter 7 (Viewing)
4 Oct 11 Rasterization 1 (Raster Devices and Sampling) [Slides]
Reading: Chapter 3 (Raster Images), Sections 3.1 and 3.2;
Chapter 7 (Viewing), Section 7.1.1; Chapter 8 (The Graphics Pipeline), Section 8.1
Oct 13 Rasterization 2 (Antialiasing and Z-Buffering) [Slides]
Reading: Chapter 8 (The Graphics Pipeline), Sections 8.2 and 8.3
5 Oct 18 Shading 1 (Illumination and Blinn-Phong Model) [Slides]
Reading: Chapter 10 (Surface Shading), Sections 10.1 and 10.2
Oct 20 Shading 2 (Graphics Pipeline and Texture Mapping) [Slides]
Reading: Chapter 11 (Texture Mapping), Sections 11.1 and 11.2
6 Oct 25 Shading 3 (Texture Mapping cont.) [Slides] [Video]
Reading: Chapter 11 (Texture Mapping), Sections 11.3 and 11.4
Oct 27 Midterm Exam
7 Nov 1 Shading 4 (Texture Mapping cont.) [Slides]
Reading: Chapter 11 (Texture Mapping), Sections 11.3 and 11.4
Nov 3 Geometry 1 (Introduction) [Slides]
Reading: N/A
8 Nov 8 Geometry 2 (Curves and Splines) [Slides]
Reading: Chapter 15 (Curves), Sections 15.1, 15.2, 15.3
Nov 10 Geometry 3 (Surfaces) [Slides]
Reading: N/A
9 Nov 15 Ray Tracing 1 (Introduction) [Slides]
Reading: Chapter 4 (Ray Tracing)
Nov 17 Ray Tracing 2 (Acceleration) [Slides]
Reading: Chapter 12 (Data Structures for Graphics), Sections 12.1 to 12.3
10 Nov 22 Animation 1 (Introduction and Mass Spring System) [Slides]
Reading: Chapter 16 (Computer Animation), Sections 16.1, 16.2
Nov 24 No Class (Thanksgiving)
11 Nov 29 Animation 2 (Simulation and Kinematics) [Slides]
Reading: Chapter 16 (Computer Animation), Section 16.5
Dec 1 No Class

Programming and Collaboration Policy

Programming projects are to be implemented individually from scratch. That is, you should not derive solutions from existing sources or previous instances of this course (including previous postings from the online course, at other universities etc.). Discussion of programming projects is allowed and encouraged, but copying of solutions or code from other students, or from students who previously took this course in any university or online setting is not allowed. If you do obtain substantial help from the instructor, teaching assistant/tutor or another student, you must document this in your program. Furthermore, you should in general not copy code from other sources. If in doubt, please ask. Further specifics are given in the assignment specifications.

To repeat, you may not copy solutions or code from other students, or students who previously took this or a similar class at a university or online. You must clearly declare any code and ideas that came directly from others, as opposed to what you created yourself. If you fail to do so, we can only assume you are presenting your own work. Of course, presenting other people's work as your own is academic dishonesty. Students who engage in dishonest activities, with an intent to alter their grade, will receive an F for the course and be reported to the University for further action. Note that you will also be held liable for publicly posting your code on Github or other public websites, if another student subsequently copies from it.


Students with documented disability are welcome to contact the DSP office to arrange the necessary academic accommodations. We will also spare no efforts to help.