Schedule and Syllabus

The lecture videos are released weekly on canvas.

Students with Documented Disabilities: Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty. Unless the student has a temporary disability, Accommodation letters are issued for the entire academic year. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE is located at 563 Salvatierra Walk (phone: 723-1066, URL: https://oae.stanford.edu/).

This is the syllabus for the Spring 2026 iteration of the course.

The starter code for all homework will be released on our GitHub repo.

The Unity starter project is available here, and the instruction video is available here.
(Log in with your Stanford account on Google Drive to get the access to the Unity project. Please do not send a request from your personal Google account.)
Week Date Event Type Description Material Readings
Week 1 Tuesday
Mar 31
Lecture 1 Introduction to VR and AR
Course overview and logistics
History of VR and AR
[slides] Podcast: Fred Brooks on Ivan Sutherland’s 1965 “Ultimate Display” Speech
Paper: Ivan Sutherland “A head-mounted 3D display", 1968
Video: Mark Zuckerberg's Metaverse announcement, 2021
Book: Neil Stephenson "Snow Crash", 1992
Thursday
April 2
Lecture 2 The Graphics Pipeline and OpenGL I:
Overview and Transformations

Rotation, translation, scaling,
modelview matrix, projection matrix
[slides] Course Notes
on Transformations

Marschner
Chap. 6 & 7
Friday
April 3
Lab 1 Hello, WebGL!
Homework #1 Release
[lab]
[homework]
Week 2 Tuesday
April 7
Lecture 3 The Graphics Pipeline and OpenGL II:
Lighting and Shading
[slides] Marschner
Chap. 10 & 11
Thursday
April 9
Lecture 4 The Graphics Pipeline and OpenGL III:
OpenGL Shading Language (GLSL)

GLSL vertex and fragment shaders
[slides]
Thursday
April 9
Homework #1 due at 11:59pm
Friday
April 10
Lab 2 Lighting and Shading with GLSL
Homework #2 Release
[lab]
[homework]
Week 3 Tuesday
April 14
Lecture 5 Human visual system
Perception of depth, color, contrast, resolution
[slides]
Thursday
April 16
Lecture 6 The Graphics Pipeline and OpenGL IV:
Stereo Rendering
[slides]
Thursday
April 16
Homework #2 due at 11:59pm
Friday
April 17
Lab 3 Stereo Rendering, Depth of Field and Anaglygh
Homework #3 Release
[lab]
[homework]
Week 4 Tuesday
April 21
Lecture 7 Head Mounted Display Optics I
Magnifier designs
Stereo rendering for HMDs
Lens distortion correction
[slides]
Thursday
April 23
Lecture 8 Head Mounted Display Optics II
Advanced HMD optics
[slides]
Thursday
April 23
Homework #3 due at 11:59pm
Friday
April 24
Lab 4 Build Your Own HMD
Homework #4 Release
[lab]
[homework]
Week 5 Tuesday
April 28
Lecture 9 Interial Measurement Units I
Gyrometers
Accelerometers
Magnetometers
[slides] Course Notes on IMUs

LaValle
Chap. 9.1 & 9.2
Thursday
April 30
Lecture 10 Interial Measurement Units II
Sensor fusion
Complementary filter
Arduino
[slides]
Thursday
April 30
Homework #4 due at 11:59pm
Friday
May 1
Lab 5 Orientation Tracking with IMUs
Arduino Programming

Homework #5 Release
[lab]
[homework]
Friday
May 1
Final Project - Proposal
due 5/3/2024 at 11:59pm
Week 6 Tuesday
May 5
Lecture 11 Pose Tracking I
Tracking with light house
[slides] Course Notes
on Tracking
Thursday
May 7
Lecture 12 Pose Tracking II
Advanced positional tracking
[slides]
Thursday
May 7
Homework #5 due at 11:59pm
Friday
May 8
Lab 6 Pose Tracking
Homework #6 Release
[lab]
[homework]
Week 7 Tuesday
May 12
Lecture 13 Frontiers of VR I
Cinematic VR, Spatial Sound, The Vestibular System
[slides]
Thursday
May 14
Lecture 14 Frontiers of VR II
VR Engines and Unity, Latency, Eye Tracking
[slides]
Friday
May 15
Homework #6 due at 11:59pm
Friday
May 15
Lab (optional) Getting started with Unity [lab]
Week 8 Tuesday
May 19
Midterm
Thursday
May 21
Guest lecture:
Week 9 Tuesday
May 26
No lecture
Thursday
May 28
Final Project - demo session
5/28/2026, 10:30am - 12pm, Packard Atrium
Tuesday
June 2
Final Project - report and code
due on 6/2/2026, 11:59pm
Report template