CSE 167 (WI 2025) Computer Graphics

Welcome to CSE 167, Introduction to Computer Graphics.

HW3 Gallery (OpenGL)

Final Gallery (Ray tracer)

Office hour (starting in Week 2) OH location
(all in CSE Building (EBU3B))
OS
Instructor Albert Chern Thursday, 1–2PM 4112 Mac
TA Trevor Hedstrom Mondays, 2–4PM B275 Windows
TA Rudresh Veerkhare Friday 11AM–1PM B250A Mac
Tutor Arnav Dandu Friday 5-6PM B270A Mac
Tutor Venkataram Edavamadathil Sivaram Thursday 12-1 pm B250A Linux and Windows
Tutor Nicholas Ho Mondays 2–3 PM B240A Mac
Tutor Shambhavi Mittal Tuesdays 9–10 AM B270A Mac

Overview

Computer graphics is the use of computing to synthesize visual informations. Specifically, it is a process of converting a mathematical representation of the geometric data to a set of pixel colors, so that the outcome best visualizes the virtual world. This course provides an introduction to computer graphics with the following focuses:

  • 3D computer graphics system: Modern graphics pipeline with OpenGL and GLSL.
  • Geometry of our 3D world: Linear algebra for Euclidean, affine and projective geometries.
  • Lights and shadows: Color the pixels according to basic optics.
  • Color and transparency: The mathematical relationship between the physical, perceptional, and displayed color. The algebra of compositing translucent colors.
  • Vector graphics: Generate smooth curves and surfaces from a few control points.
  • Photorealism: A glimpse into ray tracing and global illumination.
  • Physical simulation: A glimpse into physically realistic animated special effects.

Prerequisite

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

Course Logistics

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

  1. Sign up to Piazza (sign up link https://piazza.com/ucsd/winter2025/cse167_wi25_a00).  This is where we discuss questions in HW or lectures.
  2. Alternatively, go to Piazza -> getting started as a student -> search schools "University of California, San Diego" (full name, with comma), and then search for "cse 167."
  3. Sign up to Gradescope https://www.gradescope.com/courses/939177 (entry code: G3DZXW).  This is where you submit all the homework. 
  4. Attend the lecture in-person or remotely (or watch the replay as soon as possible).  The lectures are live lectures in the classroom which are also recorded via the UCSD podcast system.  If you miss the class, please watch the recording as soon as possible.  There are also a few lectures that are pre-recorded due to instructors absence. Catch up on those lectures according to the schedule.
  5. HW0 is due .  HW0 is there in order to make sure you can compile the skeleton code.  

Class Rules

  • Do the assignments individually. Discussion is encouraged but the final work should be independent work. The final project is done by a group of two collaborating people or by a group of a single person.
  • Do NOT share your homework solutions 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. The final project is an exception: you can show off what you have accomplished in the final project in your future career.
  • You can 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.
  • Follow Academic Integrity (c.f. https://senate.ucsd.edu/Operating-Procedures/Senate-Manual/Appendices/2).

Grades

There is no quiz or exam. The grades are made of the following HWs and project:

  • Weekly written exercises: 40%
  • Programming HW0: 5%
  • Programming HW1: 5%
  • Programming HW2: 10%
  • Programming HW3: 10%
  • Programming HW4: 10%
  • Final project: 20% (+ up to 5% bonus)
The final letter grade depends on the grade distribution. The passing grade is 70%.
Curve the grade: If over 3/4 of the class have completed CAPE course evaluation, then we will apply curve to boost everyone's letter grade.

Late policy

  • HW0–4 and Exercises 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%.
  • No late submission for final project. Submit whatever you have if it is not finished.

Syllabus

Week Monday (17:00--18:20) Wednesday (17:00--18:20) Friday (Discussion session and HW dues)
1 1/6: Introduction, Graphics pipeline. 1/8: OpenGL 1/10
2 1/13: Linear algebra 1/15: Linear algebra and 3D rotations 1/17:
  • Exercise 1 due
  • Programming HW 0 due
  • Survey (for FinAid) due (Canvas->quizzes)
3 1/20: Holiday (Martin Luther King Jr) 1/22: 3D rotations
  • Slides (3D rotation part1)
  • Slides (3D rotation part2)
  • Interactive reading material
  • 1/24:
    • Exercise 2 due
    • Programming HW 1 due
    4 1/27: Affine transformations
  • Slides (Affine transformations)
  • 1/29: Projective geometry
  • Slides (Projective geometry)
  • 1/31:
    • Exercise 3 due
    5 2/3 Instructor out of town (prerecorded lecture): Cross-ratio, Hierarchical Modeling 2/5 Instructor out of town (prerecorded lecture): Hierarchical Modeling
    • See the same video on 2/3
    2/7:
    • Exercise 4 due
    • Programming HW 2 due
    6 2/10: Lighting
  • Slides (Lighting)
  • 2/12: Barycentric Coordinates, Textures 2/14:
    • Exercise 5 due
    7 2/17: Holiday (President's Day) 2/19: Textures, Bumps, and Shadows 2/21:
    • Exercise 6 due
    • Programming HW 3 due
    8 2/24: Spline and Subdivision 2/26: Spline and Subdivision 2/28:
    • no exercise due
    9 3/3: Ray Tracing 3/5: Rendering Equation 3/7:
    • Exercise 7 due
    • Programming HW 4 due
    10 3/10: Color and Transparency 3/12: Transparency, Toon Shading, Conclusion 3/14:
    • Exercise 8 due
    Final 3/17: No class 3/19: No class 3/21: No class
    • Final project due
    Spring break

    Homework

    Final project (Due 3/21)

    The final project includes 3 components:
    1. 5%: Write-up (PDF file): Explain what you have implemented, demonstrating your understanding of the topic. Especially for Task 7 about doing something new, explain your algorithm and your reasoning.
    2. 10%: Implementation (source code): Let us look at the source code.
    3. 5%: Demonstration: A compilation of your favorite results that best show the significance of the ray-trace imagery. You may just put a result section in your write-up as the demonstration.
    4. 5%: Bonus for excellent final projects.

    Resources

    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.

    • The course lecture note .
    • Tomas Akenine-Möller, Eric Haines, Naty Hoffman, Real-Time Rendering. Good textbook of what we cover in the course (You can access free online version on UC Library).
    • John Hughes et al, Computer Graphics: Principles and Practice. Another classic textbook on 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.
    • Online resources https://learnopengl.com/ You can find many topics of our course; following the website step by step should make everything work!