Introduction to Mobile XR

A graphic portraying virtual reality, augmented reality, and mixed reality.
Image Source: VMA Nordic

In this course, students will explore the basics of mobile augmented, mixed, and virtual reality. Focus will be placed both on development of XR apps with Unity as well as on the hardware, history, mathematics, physics, algorithms, best practices, and principles behind immersive experiences and what makes them possible. By the end of the course, students will have also gained experience working in a team to develop a real-world XR application of their own choosing.


Class Time and Location

Fridays from 1:00 pm - 1:50 pm in ESJ B0322

Course Staff

This course is offered as part of the Student Initiated Courses (STICs) program at The University of Maryland, which gives students the opportunity to design, develop, and teach an official 1-2 credit class under the guidance of a faculty advisor. As such, all questions and communication about the course (outside of administrative concerns) should be directed towards the student facilitators.

Student Facilitators
Profile photo of Sahil Mayenkar
Sahil Mayenkar

Undergrad CE Junior

Website | Email

Profile photo of Joseph Feldmann
Joseph Feldmann

Undergrad CS Senior


Faculty Advisor
Profile photo of Roger Eastman
Roger Eastman

Professor of the Practice

Website | Email

Office Hours

Office hours are a time to meet with the student facilitators to clarify material taught during lecture, get help on projects, discuss course feedback and grading concerns, and even try out cool XR experiences on the lab equipment. They will be held weekly in IRB 0110 (the lab right next to the Breakpoint Cafe) at the times below:

  • Mondays from 3:00 pm to 5:00 pm
  • Thursdays from 6:30 pm to 8:30 pm

The student facilitators may choose to host additional office hours during periods of high anticipated demand or by the request of student(s). These will be announced on Piazza on a weekly basis.

Office hours with the faculty adviser are by appointment only.


The official prerequisites for most STICs course in the CS department is a minimum grade of C- in CMSC250 and CMSC216. This class has no additional prerequisites. Some students may find that prior exposure to Unity development is helpful, but it is by no means necessary to do well in this course.


There is no required textbook for this class. All necessary material will be covered in class and posted online. Links to supplementary suggested resources will be posted weekly on this site.


This course consists of three main units, in addition to the final project. Below is the tentative list of topics we aim to cover during this semester.

1 - Unity

  • The Editor Interface
  • Building Blocks (GameObjects, Components, etc.)
  • C# Scripting
  • Script Lifecycle
  • Physics System (Colliders, Rigidbodies, etc.)
  • Physics Interactions (Gravity, Collisions, Forces, Raycasting, etc.)
  • User Interfaces (UIs)
  • Scene Management
  • Events & Delegates
  • Coroutines
  • Debugging
  • Using Unity API Documentation

2 - Virtual Reality

  • History of VR
  • Headset & Controller Tracking
  • Eye, Hand, & Body Tracking
  • Lenses
  • Locomotion
  • Interactions in VR
  • Spatial Audio
  • Best UX Practices
  • Minimizing Motion Sickness
  • Performance Optimization
  • Oculus Integration

3 - Augmented & Mixed Reality

  • History of AR
  • Feature Point Detection
  • Edge Detection
  • Plane Detection
  • Simultaneous Localization and Mapping (SLAM)
  • Device Tracking
  • Depth Perception
  • Lighting Estimation
  • Real-World Occlusion
  • Best UX Pracitces
  • The AR Cloud
  • AR Foundation framework
  • XR Interaction Toolkit


NOTE: Due to the unprecedented COVID-19 crisis that resulted in major changes to the UMD Spring 2020 Academic Calendar, the class schedule for week 7 and beyond has been restructured to accommodate the compressed timeframe. Changes to the original schedule can be identified by the strikethrough. The additional resources listed below still correspond to the original schedule and topics.

Class Topics Lecture Materials Additional Resources Assignments
Week 1
Course Overview & Intro to XR Slides
Intel Talk on XR Vision Assigned: Project 0
Week 2
Basic Unity Concepts Slides
Official Unity Course
Using the Unity Interface
Essential Unity Concepts
Geometry in Unity
Rendering and Shading
Brackeys YouTube Tutorial
Jimmy Vegas YouTube Tutorial
CMSC425 Unity Notes
Script Lifecycle Docs
Assigned: Project 1
Week 3
Understanding the Physics System Slides
3D Physics Tutorial
Moving w/ FixedUpdate vs Update
CMSC425 Collisions Slides
Week 4
Additional Topics on Unity Slides
UI Components Tutorial
Unity UI Docs
Mastering Coroutines
Coroutines Tutorial
How to use C# Events in Unity
Delegates & Events Tutorial
UnityEvents Tutorial
Week 5
The History and Hardware Behind Virtual Reality Slides History
History of VR (VirtualSpeech)
History of VR (VRS)

Tracking Systems
Degrees of Freedom
UMich IMU Slides
VR Positional Tracking Systems
Inside-out vs. Outside-in
Tracking - VR textbook chap.
Behind the Oculus Quest's Tracking

How VR Lenses Work
How Lenses affect Field of View
Light & Optics - VR textbook chap.
Rendering - VR textbook chap.
Quiz 1 - Unity
Assigned: Project 2
Week 6
Considering Interactions in VR Slides Movement & Motion Sickness
Combating VR Sickness
Motion - VR textbook chap.
Interaction - VR textbook chap.

Spatial Audio
Hear New York City in 3D audio
Audio - VR textbook chap.
Stanford Spatial Audio Slides
UW Spatial Audio Slides
UC Davis Spatial Sound Tutorial

User Experience (UX)
Experiences - VR textbook chap.
Designing UX for VR apps
The UX of Virtual Reality
Week 7
Optimizing Mobile VR Performance
NO CLASS - Spring Break
(extended due to COVID-19 pandemic)
Unity's 7 Stages of Mobile VR Opt.
Oculus's Recommended Settings
Optimizing your VR/AR Experiences
Testing & Performance Analysis
Occlusion Culling - Unity Docs
Single Pass Rendering - Unity Docs
Advanced Stereo Rendering
Draw Call Batching - Unity Docs
Static GameObjects - Unity Docs
Week 8
NO CLASS - Spring Break
Week 9
Introduction to AR & Image Processing
NO CLASS - Spring Break
(extended due to COVID-19 pandemic)
Image Proc. - CV for Busy Devs
Edge Detection - CV for Busy Devs
Finding Features - CV for Busy Devs
Good vs. Bad Spaces for Tracking
Quiz 2 - Virtual Reality
Assigned: Project 3
Week 10
Sensing and Tracking the World Around Us
Augmented Reality (Part I)
Slides Basics of AR: SLAM
Vertical Plane Detection
Depth Estimation
Time of Flight Sensors
Understanding ARKit Tracking
(see from 7:20 to 11:50)
Why is Occlusion in AR So Hard?
Working Around Occlusion Issues
Occlusion-Aware AR
Assigned: Project 3
Week 11
Designing the Future of AR Experiences
Augmented Reality (Part II)
Slides Google's AR Design Guidelines
How the AR Cloud will Transform
AR Cloud & the ‘Internet of Places’
AR is the OS of the Future
"Hyper Reality" Short Film
Assigned: Project 4
Week 12
Work on Final Project Quiz 3 - Augmented Reality
Week 13
Work on Final Project Quiz 2 - XR
Week 14
Work on Final Project
Week 15
Final Presentations + Demos Due: Final Project


The homework assignments are designed to complement the material taught in class from a practical standpoint. Most of them will be in a project-style and may require a significant learning effort outside of class. Unless otherwise stated, all homework assignments are to be completed individually and must be submitted via ELMS before 5:00 AM on the due date listed below.

For each of the individual homework projects, the course staff will select up to three "winning" submissions. These are projects that demonstrate exceptional creativity, polish, and/or initiative beyond the expectations outlined in the project description. Completing the suggested optional bonus task(s) is one possible way to make your project stand out as a "winning" submission, but it is certainly not the only way to do so, nor does it guarantee that you will in fact "win". Note that the winning submission(s) is not necessarily the one(s) with the highest score(s). Students with a winning submission will be recognized below once grades have been released for the project.

Assignment Due Winners
Project 0: Spinning Cube 02/07 Harish Kumar
Anthony Toibero
Correct Git Usage Quiz 02/07 N/A
Project 1A: Barrel Bouncer (Setup) 02/14 Jim Kong
Seth Kujawa
Samuel Markey
Project 1B: Barrel Bouncer (Interactions) 02/25 Berkely Kim
Jim Kong
Daniel Smith
Project 1C: Barrel Bouncer (UI & Scoring) 03/03 Tyler Brinkley
Jim Kong
Linda Yeung
VR Best Design Practices Activity 03/12* N/A
Project 2: Barrel Bouncer VR Edition 04/06 Kyle Lam
Philip Litz
Anthony Toibero
AR Best Design Practices Activity 04/10 N/A
Project 3: Barrel Bouncer AR Edition 04/22 Jim Kong
Harish Kumar

* This assignment must be completed and turned in during office hours.

Final Projects

The final project constitutes the culminating part of the course, where teams of 4-5 students can apply what they've learned all semester to a project that they design from scratch. The cards below depict the final projects that were created for the Spring 2020 semester. Click on a card to learn more about the project!

Thumbnail picture for AR Alchemy project
AR Alchemy

Become an alchemist...right in your living room! Drag and mix AR elements to create new ones. Can you discover them all?

Thumbnail picture for Escape the Castle project
Escape the Castle

Trapped in the dungeon of a castle with nothing, you must find a way to escape before you become a feast for dragons! (Dragons not included)

Thumbnail picture for EscapeVR project

In this Virtual Reality game, navigate through the darkness to find the exit of the pitch black escape room.

Thumbnail picture for Holochess project

Multiplayer AR Holochess anyone can play on their phones. Inspired by holographic Star Wars game Dejarik, our game is out of this world!

Thumbnail picture for Maze Simulator 1998 project
Maze Simulator 1998

Test your maze-traversing and puzzle-solving intuition in our VR maze game. Make your way through a labyrinth and solve puzzles to proceed.

Thumbnail picture for vRchery project

vRchery is a VR archery game where the player enters a world in the clouds. Knock, draw, and let loose arrows at targets around the space!



Grades will be maintained on ELMS. You will be responsible for all material discussed in lecture as well as other standard means of communication (Piazza, email announcements, etc.), including but not limited to deadlines, policies, assignment changes, etc.

Any request for reconsideration of any grading on coursework must be submitted within one week of when it is returned. No requests will be considered afterwards. Note that any coursework submitted for reconsideration may be regraded in its entirety, which could result in a lower score if warranted.

Your final course grade will be determined according to the following percentages:

Category Percentage
Participation 10%
Homework 25%
Quizzes 25%
Final Project 40%

Final course grades may be curved as necessary, based on each student's total numerical score for all coursework at the end of the semester. But: It is very likely that 90 and above earns an A, 80-90 earns a B, 70-80 earns a C, etc.; the curve will only lower the cutoffs, not raise them. Plus/minus grades will be assigned towards the higher and lower ends of the grade ranges.

Excused Absence and Academic Accommodations

See the section titled "Attendance, Absences, or Missed Assignments" available at Course Related Policies.

Due to the nature of the assignments, in-class participation points cannot be made up. Students with a University-approved excused absence will be excused from that class's participation points, and their overall participation grade will be calculated based on the remaining weeks' assignments. Students are still responsible for learning all material discussed in lecture.

Quizzes are considered major graded assessments for this course. As such, students who miss a class where there is a scheduled quiz must provide verifiable documentation in order for a make-up to be given. All make-ups should be taken as soon as possible, no later than one week after the quiz, except under extreme documented circumstances that prevent this from happening.

It is the student's responsibility to inform the instructor prior to class if they anticipate an having absence.

Disability Support Accommodations

See the section titled "Accessibility" available at Course Related Policies.

Academic Integrity

Please make sure you are familiar with the CS Department Academic Integrity policy as well as the University Academic Integrity policies, which can be found in the sections titled "Academic Integrity" and "Code of Student Conduct" available at Course Related Policies.

Note that academic dishonesty includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. In short, all submitted work must be your own. Cases of academic dishonesty will be pursued to the fullest extent possible as stipulated by the Office of Student Conduct. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit

Course Evaluations

If you have a suggestion for improving this class, don't hesitate to tell the instructor or TAs during the semester. At the end of the semester, please don't forget to provide your feedback using the campus-wide CourseEvalUM system. Your comments will help make this class better.

Thanks to the CS professors at the University of Maryland, College Park for the basic syllabus outline.