// scene → your code → image

Computer Graphics

A senior elective on how images are computed from scene descriptions. Students do not use graphics tools; they build them — offline renderers in Python and NumPy, then real-time work on the GPU.

courseCS 453 termFall 2026 levelUndergraduate — senior elective

Course documents

The outline covers assessment weighting, learning outcomes and policies; the calendar is the same schedule shown below, as a printable PDF.

Course calendar

A1 spec opens a PDF in a new tab starter downloads a zip readings click to expand slides not yet posted
CS 453 lecture schedule, Fall 2026
Lec Date Topic & materials Deliverable Submissions
1 Mon, 31 Aug
What graphics is (and isn't); setup; first pixels & gradients
slidesfinger ex.
readings
Shirley ch. 1
Introduction: what graphics covers, the pipeline in one page, and §1.7 on writing graphics code. Read before class.
Shirley §3.1–3.2
Raster devices; images, pixels and geometry. How a pixel grid maps to coordinates — we use this convention all semester.
RTiOW §2 Output an Image
Writes a PPM file and fills it with a gradient. Exactly what we do in the first finger exercise.
Alvy Ray Smith 1995
"A Pixel Is Not a Little Square", Microsoft tech memo. Short and optional. Why a pixel is a sample, not a tile.
— —
2 Wed, 2 Sep
Bresenham's line algorithm
slidesfinger ex.
readings
Shirley §9.1.1
Line Drawing: the midpoint algorithm, which is Bresenham's in modern clothes. Read before class.
Bresenham 1965
"Algorithm for computer control of a digital plotter", IBM Systems Journal 4(1). The original. Four pages; read after the lecture.
Foley et al. §3.2
Scan-converting lines, including the all-octant case and the incremental error argument. Optional, deeper.
— —
3 Fri, 4 Sep
Color & alpha; primitives; fills (inside-test, flood fill)
slidesfinger ex.
readings
Shirley §3.3–3.4
RGB colour and alpha compositing. Read before class; the over operator is the one you implement.
Porter & Duff 1984
"Compositing Digital Images", SIGGRAPH '84. Where premultiplied alpha and the over operator come from. Skim §2–3.
Shirley §9.1.2
Triangle Rasterization: the inside-test via barycentric coordinates, and the edge-function form we use for primitives.
Alvy Ray Smith 1979
"Tint Fill", SIGGRAPH '79. The original flood-fill paper. Optional; the algorithm is two paragraphs.
4 Mon, 7 Sep
Vectors & the dot product
slidesfinger ex.
readings
Shirley §2.4–2.4.3
Vectors, vector operations, Cartesian coordinates, and the dot product. Read before class.
Shirley §2.3.1–2.3.3
Angles, trig functions and the identities we lean on. Refresher; skim if you are comfortable.
— —
5 Wed, 9 Sep
Parametric lines, circles, ellipses
slidesfinger ex.
readings
Shirley §2.7.6
2D Parametric Curves: p(t) = ... for lines and circles, and why we prefer the parametric form for drawing.
Shirley §2.7.1–2.7.2
2D Implicit Curves and the gradient. The other way to write a circle; you need both.
Shirley §2.8
Linear Interpolation. One page — but lerp is used in every lecture from here on.
— —
6 Fri, 11 Sep
Bezier curves; de Casteljau
slidesfinger ex.
readings
Shirley §15.6.1
Bézier Curves: control points, the Bernstein form, and the de Casteljau algorithm (Figure 15.16). Read before class.
Shirley §15.1–15.2
Curves and curve properties: parameterisation and continuity. Background for why Bézier segments join the way they do.
Pomax, A Primer on Bézier Curves
Interactive, free. Read the 'de Casteljau' and 'Bernstein form' chapters and play with the widgets.
7 Mon, 14 Sep
2x2 matrices: rotation, scale
slidesfinger ex.
readings
Shirley §6.1–6.2.4
Determinants, matrices, matrix arithmetic, vectors as columns, and the special matrices (identity, transpose, orthogonal). The determinant is the geometry behind next lecture's inverse — and behind A3's singular-matrix guard.
Shirley §7.1–7.1.3
2D Linear Transformations: scaling, shearing, rotation as 2×2 matrices. Read before class.
— —
8 Wed, 16 Sep
Homogeneous coordinates; composition & order
slidesfinger ex.
readings
Shirley §7.3
Translation and Affine Transformations: why homogeneous coordinates exist. The core of this lecture — read for the w coordinate specifically: a point carries w = 1 and moves under translation, a direction carries w = 0 and does not.
Shirley §7.1.5
Composition and Decomposition of Transformations: order matters, and what each order means. The pivot sandwich (translate, rotate, translate back) is this section applied three times.
Shirley §6.3–6.3.1
Computing with Matrices and Determinants, and Computing Inverses: where the 2×2 inverse formula comes from, and why a zero determinant leaves you with nothing to divide by.
Shirley §7.4
Inverses of Transformation Matrices: the shortcut inverse of each named transform (negate the translation, transpose the rotation), which is cheaper than the general formula whenever you know what you built.
— —
9 Fri, 18 Sep
Reference frames & the scene graph
slidesfinger ex.
readings
Shirley §2.4.5
Orthonormal Bases and Coordinate Frames: a frame is an origin plus basis vectors.
Shirley §7.5
Coordinate Transformations: converting between frames is a matrix, and which way round it goes.
Shirley §12.2
Scene Graphs: a tree of frames, and how the matrix stack falls out of it (§12.2.2 for ray tracing).
Shirley §12.1–12.1.1
Triangle Meshes and mesh topology — one page, for the triangle fan that fills a polygon. We return to this properly in lecture 24.
Lasseter 1987
"Principles of Traditional Animation Applied to 3D Computer Animation", SIGGRAPH '87. Where ease-in/ease-out, follow-through and secondary action come from. Optional, and the best three pages you can read before animating anything.
10 Mon, 21 Sep
Rays: p = o + t*d; marching & nearest hit
slidesfinger ex.
readings
Shirley §2.7.6–2.7.7
Parametric lines in 2D and 3D: p(t) = o + t d, and what t means. Re-read.
Shirley §4.1
The Basic Ray-Tracing Algorithm, one page: for each pixel, find the nearest hit.
RTiOW §4.1 The ray Class
The two-line ray class we mirror in Python.
— —
11 Wed, 23 Sep
2D light & shadow: fan of rays, occluders
slidesfinger ex.
readings
Shirley §4.5.1
Light Sources: point lights, and what a light contributes at a point.
Shirley §4.5.3
Shadows: a point is lit if the ray towards the light hits nothing first. Two-dimensional in class, same idea.
— —
12 Fri, 25 Sep
Exact ray-segment intersection; 2D soft shadows
slidesfinger ex.
readings
Shirley §2.7.6 (lines)
Two parametric lines intersect where their parameters agree: a 2×2 linear system. Set it up before class.
Shirley §6.3.2
Linear Systems: Cramer's rule is the fastest way to solve that 2×2. You met §6.3 at lecture 8 for the inverse; this is the other half of it.
Cook, Porter & Carpenter 1984
"Distributed Ray Tracing", SIGGRAPH '84. §2 on soft shadows from area lights. Optional now; we return to it in lecture 21.
—
13 Mon, 28 Sep
3D vectors; cross product; the camera
slidesfinger ex.
readings
Shirley §2.4.4–2.4.7
Cross Product, orthonormal bases, and constructing a basis from one or two vectors — the camera frame.
Shirley §4.2–4.3
Perspective, and Computing Viewing Rays for orthographic and perspective cameras. Read before class.
RTiOW §4 Rays, a Simple Camera, and Background
The same camera, built in code.
— —
14 Wed, 30 Sep
Ray-sphere intersection
slidesfinger ex.
readings
Shirley §4.4.1
Ray-Sphere Intersection: substitute the ray into the implicit sphere, solve the quadratic. Read before class.
Shirley §2.2
Solving Quadratic Equations, and the numerically stable form. Short.
RTiOW §5–6.2
Adding a Sphere, and simplifying the intersection code.
— —
15 Fri, 2 Oct
Multi-object scenes; nearest hit; antialiasing
slidesfinger ex.
readings
Shirley §4.4.4
Intersecting a Group of Objects: keep the smallest positive t.
RTiOW §6.3–6.5
An abstraction for hittable objects and a list of them — the scene structure you build in A5.
RTiOW §8 Antialiasing
Many jittered samples per pixel, averaged. Read before class.
A4 dueA5 released
—
16 Mon, 5 Oct
Normals; diffuse (Lambert) shading; point lights
slidesfinger ex.
readings
Shirley §4.5–4.5.2
Shading: light sources and shading in software.
Shirley §5.1–5.2.1
Point-like light sources and Lambertian reflection: the cosine law, derived. Read before class.
RTiOW §6.1, §9
Shading with surface normals, then diffuse materials and gamma correction.
— —
17 Wed, 7 Oct
Shadow rays; reflection & metal
slidesfinger ex.
readings
Shirley §4.5.3–4.5.4
Shadows and Mirror Reflection: the shadow ray, the epsilon offset, and the reflected direction. Read before class.
Shirley §5.2.2
Specular reflection: the highlight model we add next to the mirror term.
RTiOW §10 Metal
Mirrored and fuzzy reflection as a material class.
— —
18 Fri, 9 Oct
Refraction & glass (Snell); recursive rays
slidesfinger ex.
readings
Shirley §14.3–14.3.2
Smooth Dielectrics: reflectivity of a dielectric (Fresnel, Schlick), refraction and Beer's law. Read before class.
RTiOW §11 Dielectrics
Snell's law, total internal reflection, the Schlick approximation, and the hollow glass sphere.
RTiOW §9.2
Limiting the number of child rays — the recursion depth you must cap.
A5 dueA6 released
—
19 Mon, 12 Oct
Why ray tracing is slow; acceleration ideas
slidesfinger ex.
readings
Shirley §12.3 (opening)
Spatial Data Structures: why testing every ray against every object is hopeless, and the three ways out.
RT Next Week §3.1–3.2
Bounding Volume Hierarchies: the key idea, and hierarchies of bounding volumes.
Shirley §1.6
Efficiency: the one-page argument for measuring before optimising. Re-read.
— —
20 Wed, 14 Oct
Building a BVH: AABBs, slab test, traversal
slidesfinger ex.
readings
Shirley §12.3.1–12.3.2
Bounding Boxes and Hierarchical Bounding Boxes: the slab test and BVH traversal. Read before class.
RT Next Week §3.4–3.8
Ray intersection with an AABB, building boxes for hittables, the BVH node class, and splitting.
— —
21 Fri, 16 Oct
Distribution ray tracing: soft shadows, depth of field
slidesfinger ex.
readings
Cook, Porter & Carpenter 1984
"Distributed Ray Tracing", SIGGRAPH '84. The paper that turned every ray into a random sample: soft shadows, depth of field, motion blur. Read before class.
RTiOW §13 Defocus Blur
The thin-lens camera: sample the aperture, focus on a plane.
Shirley §14.5.3
Motion and Defocus Blur, in one page.
A6 dueA7 released
—
22 Mon, 19 Oct
Render show-and-tell; midterm review
slidesfinger ex.
— —
— Wed, 21 Oct Midterm
exam paper
—
— Fri, 23 Oct Fall Break
A7 due (midterm scene)
—
23 Mon, 26 Oct
Ray-triangle intersection; barycentric coordinates
slidesfinger ex.
readings
Shirley §2.9–2.9.2
Triangles and barycentric coordinates in 2D and 3D. Read before class.
Shirley §4.4.2
Ray-Triangle Intersection: solve for (t, β, γ) with Cramer's rule, then test the barycentrics.
RT Next Week §6 Quadrilaterals
Ray-plane intersection and interior testing with planar coordinates — the same idea for quads. Optional.
— —
24 Wed, 28 Oct
Meshes & the OBJ format; loading real models
slidesfinger ex.
readings
Shirley §12.1–12.1.2
Triangle Meshes, mesh topology, and indexed mesh storage — which is exactly what an OBJ file is.
Bourke, Wavefront OBJ file format
The reference for v / vn / vt / f lines. Read the first two pages; the rest is for the curious.
Shirley §7.2.2
Transforming Normal Vectors: why normals do not transform like points. Needed once you place a mesh.
— —
25 Fri, 30 Oct
Light & radiometry: flux, irradiance, radiance, solid angle
slidesfinger ex.
readings
Shirley §14.6–14.6.4
Radiometry: spectral energy, power, irradiance, radiance. Read before class, slowly.
Shirley §2.3.4
Solid Angles and Spherical Trigonometry: the steradian, and integrating over a hemisphere.
Shirley §2.5.2
Integrals over solid angle. One page.
A8 released
—
26 Mon, 2 Nov
The rendering equation & BRDFs
slidesfinger ex.
readings
Shirley §14.7–14.8
Radiometry of Scattering (the BRDF) and the Transport Equation. Read before class.
Kajiya 1986
"The Rendering Equation", SIGGRAPH '86. The original statement. Read §1–2; the rest is history.
Shirley §14.9
Materials in Practice: what real BRDFs look like. Skim.
— —
27 Wed, 4 Nov
Monte Carlo integration; path tracing, emissive materials
slidesfinger ex.
readings
Shirley §13.3
Monte Carlo Integration: the estimator, its variance, and why it converges as 1/√N. Read before class.
Shirley §14.10
Monte Carlo Ray Tracing: the path tracer in a page.
RT Rest of Life §2–3
A simple Monte Carlo program (estimating π) and one-dimensional Monte Carlo integration.
RT Next Week §7 Lights
Emissive materials, and turning objects into lights.
— —
28 Fri, 6 Nov
Importance sampling; the path tracer in practice
slidesfinger ex.
readings
Shirley §2.12.1, §13.4.1
Importance Sampling, and choosing random points by function inversion. Read before class.
RT Rest of Life §3.7, §6
Importance sampling in 1D, then playing with it in the Cornell box.
RT Rest of Life §9–10
Sampling lights directly, and mixture densities — the two tricks that make the A9 path tracer converge.
A8 dueA9 released
—
— Mon, 9 Nov Iqbal day — —
29 Wed, 11 Nov
Real-time: input -> update -> draw, every frame
slidesfinger ex.
readings
Nystrom, Game Programming Patterns: Game Loop
The input → update → draw loop, fixed versus variable timestep. Read before class.
Fiedler, "Fix Your Timestep!"
Why the update rate should not depend on the frame rate. Short.
Shirley §22.1–22.2
Platforms and Limited Resources: what real-time budgets look like. Skim.
— —
30 Fri, 13 Nov
The GPU; the programmable pipeline; the depth buffer
slidesfinger ex.
readings
Shirley §17.1–17.4
Hardware overview, what graphics hardware is, and buffers, state and shaders. Read before class.
Shirley §9.2.2–9.2.3
A Minimal 3D Pipeline, and the z-buffer for hidden surfaces.
Shirley §9.4.2
Backface Culling. Half a page.
A9 dueA10 released
—
31 Mon, 16 Nov
Hello triangle (ModernGL, GLSL)
slidesfinger ex.
readings
Shirley §17.6–17.10
Application layout, geometry, a first look at shaders, vertex buffer objects and vertex array objects. Read before class.
LearnOpenGL Hello Triangle
The canonical first program; ModernGL wraps exactly these calls.
ModernGL documentation
Start with the 'Getting started' page and the triangle example.
— —
32 Wed, 18 Nov
Fragment shaders: color = f(x,y) per pixel
slidesfinger ex.
readings
Shirley §17.8.2, §17.13
Fragment shader example, and shading in the fragment processor.
Book of Shaders ch. 5 Shaping functions
colour = f(x, y): smoothstep, step, and drawing with functions. Read before class and edit the live examples.
Book of Shaders ch. 6 Colors
Mixing colours in a shader.
— —
33 Fri, 20 Nov
Shadertoy: SDFs & raymarching
slidesfinger ex.
readings
Quilez Distance functions
The catalogue of signed distance functions for primitives, with GLSL. Read before class.
Quilez Raymarching distance fields
Sphere tracing: step by the distance, stop when close. The whole technique in one page.
Shirley §21.1–21.2
Implicit Modeling: skeletal primitives, blending, and rendering implicit surfaces. Optional background.
— —
34 Mon, 23 Nov
3D on the GPU: the MVP chain; perspective
slidesfinger ex.
readings
Shirley §8.1–8.3
Viewing transformations, projective transformations, and perspective projection. Read before class.
Shirley §17.11
Transformation Matrices on the hardware: uniforms, GLM, and the orthographic example.
LearnOpenGL Coordinate Systems
Model, view, projection, and clip space, with pictures.
— —
35 Wed, 25 Nov
Blinn-Phong lighting; textures & UV mapping
slidesfinger ex.
readings
Shirley §5.2.2–5.2.3
Specular reflection (Blinn-Phong) and calculating shading. Read before class.
Shirley §17.13.1–17.13.2
The Blinn-Phong shader program: vertex and fragment shaders.
Shirley §11.1–11.2.2, §17.15
Looking up texture values, texture coordinates, and texture objects on the hardware.
LearnOpenGL Textures
Loading an image and sampling it with UVs.
— —
36 Fri, 27 Nov
Final-project kickoff; idea pitches
slidesfinger ex.
readings
Shirley §1.7
Designing and Coding Graphics Programs: class design, debugging, and scope. Read before you pitch.
Shirley §22.5
The Game Production Process: how a small team scopes a project. Optional.
A10 dueA11 released; Proposal assigned
—
37 Mon, 30 Nov
Project lab: scoping check-ins
slidesfinger ex.
Proposal due
—
38 Wed, 2 Dec
Lab: interactive 3D scene
slidesfinger ex.
— —
39 Fri, 4 Dec
Shadow mapping: depth buffer, two-pass rendering
slidesfinger ex.
readings
Shirley §11.4.4
Shadow Maps: render depth from the light, then compare. Read before class.
LearnOpenGL Shadow Mapping
The two-pass implementation, plus bias and PCF for the artefacts you will hit.
Williams 1978
"Casting curved shadows on curved surfaces", SIGGRAPH '78. The original. Optional.
A11 due
—
40 Mon, 7 Dec
Graphics meets AI: NeRFs, Gaussian splatting
slidesfinger ex.
readings
Mildenhall et al. 2020
"NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis", ECCV 2020. Read §1, §3–4: it is volume rendering plus a network.
Kerbl et al. 2023
"3D Gaussian Splatting for Real-Time Radiance Field Rendering", SIGGRAPH 2023. Read §1 and §4–6; note how much is classic rasterisation.
Shirley §14.5
A Brute Force Photon Tracer: the forward-rendering picture that both papers invert. Optional.
— —
41 Wed, 9 Dec
Course review & exam prep
slidesfinger ex.
readings
Shirley ch. 4, ch. 7
Ray Tracing and Transformation Matrices, re-read end to end. Everything else in the course hangs off these two chapters.
Shirley §9.2, §17.4
The pipeline and the hardware model, for the real-time half.
Final project due after the exam period
—
— Thu, 10 Dec Final Exams
exam paper
—

Slide decks and finger exercises go up after each lecture. Assignment specs are linked on their release date; submissions and exam papers go through the course LMS.

← All teaching