CSE 167 (WI 2021)

Welcome to CSE 167, Introduction to Computer Graphics.

  • Lecture: Tue Thu 11:00 - 12:20
  • Discussion Session: Wed 11:00-11:50 (starting from week 2 [2/13])
  • Instructor: Albert Chern (office hour Fri 16:00-17:00)
    • TA: Joseph Warmus (office hour Mon 12:00-13:00)
    • TA: Guowei Yang (office hour Thu 10:00-11:00)
    • Tutor: Cynthia Butarbutar (office hour Tue 15:00-16:00)
    • Tutor: Yihan Wang (office hour Thu 18:00-19:00)
    • Tutor: Baichuan Wu (office hour Wed 10:00-11:00)

Visit Canvas (for all info including Zoom links), Gradescope (submission) and Piazza (Q&A).


The course provides an introduction to Computer Graphics, that is, the use of computer to synthesize visual informations. The course focuses on the theory and the system of modern 3D graphics, as well as the basis of vector graphics. We will use the modern OpenGL and GLSL as the programming framework.

The material consists of 4 units, each of which corresponds to a homework assignment. (There is also a HW0 for compiling the skeleton code.)

  1. Geometry of our 3D world. We all experience that further objects look smaller. But by how much exactly? The mathematics in the Renaissance Art provides the answer.
  2. Bring a virtual world to life. There is a little graphics factory producing pixel colors in your computer. How do you correctly pour the data describing a virtual world (geometry, light, camera) into this factory so that it outputs the desired pixel color in the final product?
  3. Vector graphics design. The fonts on your computer screen are made of interpolated curves determined by a few control points. Give your favorite control points to draw a 2D vector graphics art.
  4. Photorealistic art. How do you draw a photorealistic picture? Simulate the optical physics in your virtual 3D world.


  • C++ (knowledge of C or Java should be adequate to learn C++)
  • A computer (laptop or desktop) capable of running Homework 0.
  • Basic linear algebra: vectors and matrices. (A review is given in Week1 but we assume you have learned it in the past.)


Vector Graphics Design

PDF reader by Siqi Jiang.
Rose by Sarah Ekaireb.
Deep Night after Drunk by Jiaer (Jared) Zhang.
Piano by Jiaer (Jared) Zhang.
Graffiti by anonymous.
Clef by Sachinda Edirisooriya.

Global Illumination with Ray Tracing

by Jesus Gutierrez.
Anonymous from Piazza.



  • Week 1
    • 1/5 (Tue) Introduction to Computer Graphics.
    • 1/7 (Thu) Linear Algebra of Positions and Vectors.
  • Week 2
    • 1/12 (Tue) Affine Transformations.
    • 1/14 (Thu) Projective Geometry.
  • Week 3
    • 1/19 (Tue) Perspective View.
    • 1/21 (Thu) OpenGL basics.
  • Week 4
    • 1/26 (Tue) Matrix Stack.
    • 1/28 (Thu) Barycentric Coordinates and Lighting.
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10

    Course Logistics

    Getting Started (make sure to follow it in Week 1)

    1. Sign up to Piazza.  This is where we discuss questions in HW or lectures. Go to https://piazza.com/signup/ucsd, search for CSE 167, and enroll.
    2. Sign up to Gradescope.  This is where you submit all the homework and the weekly one-minute paper.  Enroll to CSE 167 on gradescope using the @ucsd.edu email https://www.gradescope.com/ .  You probably have already got an email notification as I registered students.  Once the university helps us link the Gradescope to Canvas, the Gradescope link will also show up on the left menu bar of Canvas.
    3. Submit weekly one-minute report.  It is a feedback form due every Friday night.  It takes only a minute.  Tell us what you have learned or what you don't get.  Each week's one-minute report worths 1% of your final grade (10% in total for ten weeks).  You will earn those points for free by writing whatever you want!
    4. Attend the live remote lecture (or watch the replay as soon as possible).  The lectures are live lectures.  If you cannot attend due to time-zone complication, please watch the recording as soon as possible.  Note that Zoom recording on Canvas tends to automatically delete lectures after 30 days; let me know on Piazza if you have trouble reviewing earlier video as I can revive the videos from trashcan.  Take notes, read slides (will be available on Syllabus).
    5. HW0 is due 1/12 (Week 2 Tuesday).  HW0 is there in order to make sure you can compile the skeleton code.  


    Class Rule: You are expected...

    • to do the assignments individually (and start early). Discussion is encouraged but the final work should be independent work.
    • NOT to share your source code online (such as on your github) even after the course. These are viewed as homework solutions and we do not want to spoil the future course takers.
    • to look up coding questions online. The course makes extensive use of OpenGL (and C++). While no prior knowledge of OpenGL is required, you'll be expected to look it up largely from online documentations / forums / tutorials for specific questions you encounter.  You are also welcomed to post conceptual questions (and answer others' questions) on Piazza.
    • to follow Academic Integrity (c.f. https://senate.ucsd.edu/Operating-Procedures/Senate-Manual/Appendices/2).


    • Weekly one-minute report: 10%
    • HW0: 5%
    • HW1: 20%
    • HW2: 25%
    • HW3: 20% (+ up to 10% bonus)
    • HW4: 20% (+ up to 10% bonus)

    The final letter grade depends on the grade distribution.

    Late policy:

    • We don't accept any late submission for the one-minute report.
    • HW late penalty: If the late submission lies in the interval \([(n-1)\cdot 24 {\rm hr} , n\cdot 24{\rm hr})\) after the deadline, the homework grade will be multiplied by \((10-n)/10\).  For example 1st day late submission is scaled by 90%; 2nd day late submission is scaled by 80%; and so on.  After the 10th day, that assignment grade stays 0%.


    There is no specific required textbook for this course. But if you are confused with the lectures or you want to see various expositions, here are a few books that you may want to look up.

    • John Hughes (and others), Computer Graphics: Principles and Practice. It is known as the bible of computer graphics. It is comprehensive and can gain a broad view in graphics.
    • Steven Gortler, Foundations of 3D Computer Graphics. Careful mathematical exposition within a CG API. If there is confusion in math (what is basis, vector, components) it is good to see how this book handles them.
    • Steve Marschner and Peter Shirley, Fundamentals of Computer Graphics. It is a fairly simple text and is easy to follow.
    • OpenGL books: the Red Book (Shreiner, Woo et al.), the Orange Book (Randi Rost.), etc. These are the canonical programming guide.