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 2024 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
April 2
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 4
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 5
Lab 1 Hello, WebGL!
Homework #1 Release
[lab]
[video]
[homework|solutions]
Week 2 Tuesday
April 9
Lecture 3 The Graphics Pipeline and OpenGL II:
Lighting and Shading
[slides] Marschner
Chap. 10 & 11
Thursday
April 11
Lecture 4 The Graphics Pipeline and OpenGL III:
OpenGL Shading Language (GLSL)

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

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

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