Course Syllabus

CSCI 5619: Virtual Reality and 3D Interaction


Evan Suma Rosenberg  (he/him/his || they/them/their)
Office Hours: W 3:00 - 4:00pm, F 2:00 - 3:00pm CDT
Location: Does it even matter anymore?
Email: suma at umn dot edu

Tongyu Nie  (he/him/his)
Office Hours: T/Th 2:00 - 4:00pm CDT
Location: Somewhere, presumably
Email: nie00035 at umn dot edu


Course Overview and Learning Objectives

The goal of this course to provide a comprehensive overview of the state-of-the art in virtual reality technologies and 3D user interfaces.  Classroom topics will include display systems, motion tracking, spatial interaction techniques, human factors, and applications  Students will learn how to develop virtual reality experiences through hands-on programming assignments using Oculus Quest headsets.  Theoretical and practical knowledge will evaluated through quizzes throughout the semester and applied in a course project.  This project will be the major deliverable at the end of the course; there will be no final exam.

Students will gain a deep understanding of the theoretical foundations, hardware/software technologies, and design principles for the creation of virtual reality experiences. After completing this course, you will be able to do the following:

  • Understand immersive input/output devices, software, and systems
  • Implement spatial interaction techniques, including:
    • Selection
    • Manipulation
    • Navigation
    • System control
  • Critically evaluate what makes a virtual reality experience effective and compelling (and conversely, what doesn’t)
  • Design and develop virtual reality applications that apply best practices for 3D user interfaces

I look forward to helping you develop these skills!



Students must be self-motivated, interested in thinking critically about 3D interaction, and willing to commit a minimum of 9 hours per week for academic work, including lecture videos, assigned readings, virtual reality programming assignments, and project development. Familiarity with basic concepts of computer graphics and/or prior experience with game engines is beneficial, but not required.


Course Structure

This course will be delivered remotely. All lecture content will be prerecorded and posted on Canvas, and the instructor will be available on Zoom during the regularly scheduled class time for discussions with students.  Students are strongly encouraged to watch the lecture videos during class time, so that they can pause and ask questions.  However, I understand that some students are located in inconvenient time zones, and this may not always be possible due to the complexities of attending class remotely. 

Although course content will be delivered asynchronously, the general expectation is that students will avoid schedule conflicts during regular class times.  We may occasionally make use of this time slot for synchronous course activities.

Teaching a remote class not as fun as in-person, so I encourage you all join Zoom often so I can get to know each of you.  I look forward to meeting you!


Communication and Help:

Communication: The best way to asynchronously communicate with the instructor and TA is through the course Slack workspace.  Of course, you can also contact us by email; however, this is less efficient and will generally involve a longer turnaround time.  

Office Hours: Because all the lectures are prerecorded, the regularly scheduled class time has been reserved for interacting with the instructor.  The TA will also hold regularly scheduled office hours on Slack.  We are also both available to meet outside these times, so feel free to reach out and request another meeting time.



3D User Interfaces: Theory and Practice (Second Edition)
LaViola, Kruijff, McMahan, Bowman, and Poupyrev. ISBN: 978-0134034324

Please note that this textbook is required. Students are expected to read the chapters associated with each lecture; quizzes may include content from both the lecture and textbook.  Make sure you purchase the second edition that was published in 2017, not the older version from 2004. 


Hardware and Software

Software: In this class, we will be using a web-based game engine called Babylon.js.  Assignments will involve programming using TypeScript, a typed language that transcompiles to JavaScript.   Both of these are open-source and will run in major web browsers (e.g., Chrome, Firefox, Edge).  

Hardware: Each student in this course will receive an Oculus Quest virtual reality system, which will be used for programming assignments and the final project.  If you are located near the Twin Cities, you can schedule a time to pick up the equipment.  CSE-IT will arrange shipping for non-local students. You will be required to return this device at the end of the course.


Expectations in this Course:

Time Commitment: This is a three credit course. This means that the course is structured such that an average student will need to put in 9 hours of academic work per week in order to receive a C in the course. To get a higher grade, expect to put in more time or work more efficiently.

Participation: Students are required to watch the videos for all lecture content.  Each lecture will introduce a participation exercise which is due within 48 hours of the end of class.  Each will be scored out of 2 points; one point for attempting the exercise, and one point for completing it correctly.  The lowest 2 scores will be dropped automatically to accommodate the occasional absence.

Quizzes: A total of 6 quizzes will be given throughout the course, which will be administered through Canvas.  Quizzes will generally be due within 24 hours of posting. They will be "open-book," so you are free to consult course materials such as lecture videos, slides, and the textbook. However, they must be completed individually; you cannot ask the instructor, TA, students, or anyone else for help.

Programming Assignments: Concepts introduced in lecture will be applied in 7 programming assignments that will involve implementing 3D user interfaces and spatial interaction techniques.   Each will be scored out of either 10 or 20 points, depending on the length and scope of the assignment.  (Generally, 10 point assignments are due one week after posting, and 20 point assignments are due in two weeks.)  These assignments will also often include a bonus challenge for additional points, which typically involves implementing something original or creative.

Project: Students in the class will be expected to complete a multi-part project during the semester, in teams of two. The project consists of four graded milestones, including a project proposal, implementation, presentation/demo, and final writeup. Although I can try to help facilitate team matching, it is your responsibility to find a project partner early in the semester (well before the first milestones).  Individual projects or teams of three may also be considered with instructor permission.



Your final grade is based on the following items and weights:

  • Programming Assignments- 40%
  • Project - 40%
  • Quizzes - 10%
  • Participation - 10%

The grading in this course is on an absolute scale.  This means that the performance of others in the class will not affect your grade.  Your percentage will earn you the following grade:

  • A    ≥ 93.0% 
  • A-    90.0% - 93.0%
  • B+   87.0% - 90.0%
  • B     83.0% - 87.0%
  • B-    80.0% - 83.0%
  • C+   77.0% - 80.0%
  • C     73.0% - 77.0%
  • C-    70.0% - 73.0%
  • D+   67.0% - 70.0%
  • D     60.0% - 67.0%
  • F      < 60.0%

For S/N grading, a satisfactory grade (S) requires a grade of 70.0% or above.


Late Policy:

All students in this course will be granted a total of 7 "late points" at the beginning of the semester.  Each point is worth a 24-hour extension for any programming assignment with no penalty.  You are free to allocate them however you want throughout the course.  For example, you could use all your points for a 10-day extension on a single assignment, or a single point for 1-day extensions on 7 different assignments.   You cannot spend less than one point at a time, so the deadline can only be extended in 24-hour increments.

Late points will be deducted from your total automatically when you submit an assignment after the posted deadline.  Each student is responsible for keeping track of their remaining points.  No other late assignments will be accepted without permission from the instructor.  

The late policy is intended to provide students with flexibility for missed work, including those due to legitimate absences.  If you have points remaining, you do not need to contact the instructor for an extension on programming assignments.  If you have not missed a total of 2 classes, you do not need to contact the instructor to request an extension on participation exercises.   If you go over these limits and anticipate further difficulties in completing work on time, then you should contact me to discuss your situation.


Standard Policies:

This class relies on standard university policies. It's your responsibility to familiarize yourself with:


Academic Dishonesty:

First, please review the Departmental Policy on Academic Dishonesty; this is a little more specific than the university-wide policy above.  How this applies to this class specifically:

1. You are permitted to use course material without citing: this includes the lecture videos, slides, textbook, and any other material the instructor posts on Canvas. You can also use anything from the official Babylon.js documentation.

2. You are permitted to use art assets (e.g., 3D models, textures, etc.) from the internet in programming assignments and the final project, but you must cite all third-party content used in a readme file.

3. Copying code from the internet (other than the sources noted above) is Academic Dishonesty.

4. Posting class material to the internet without permission is Academic Dishonesty.

5. I consider searching for a currently assigned programming problem on the internet to be Academic Dishonesty, even if you don't actually use the code.

6. If you submit a solution that you do not understand, that is Academic Dishonesty, because it is not an accurate representation of your own knowledge of the content. 

7. Any collaboration with another person on a quiz or programming assignment is Academic Dishonesty.

8. In general, Academic Dishonesty in this class will result in a 0 on the assignment or exam in question for the first offense, and an automatic F in the class for the second. 

9. Remember, your instructor is here to help.  If you have any questions about whether something counts as academic dishonesty, please ask!

Academic Freedom and Responsibility: Academic freedom is a cornerstone of the University. Within the scope and content of the course as defined by the instructor, it includes the freedom to discuss relevant matters in the classroom. Along with this freedom comes responsibility. Students are encouraged to develop the capacity for critical judgment and to engage in a sustained and independent search for truth. Students are free to take reasoned exception to the views offered in any course of study and to reserve judgment about matters of opinion, but they are responsible for learning the content of any course of study for which they are enrolled. Reports of concerns about academic freedom are taken seriously, and there are individuals and offices available for help. Contact the instructor, the Department Chair, your adviser, the associate dean of the college, or the Vice Provost for Faculty and Academic Affairs in the Office of the Provost.


Aspects of this syllabus (including this statement) were adapted from Blair MacIntyre, Nathan Taylor, Shana Watters, Lana Yarosh, or the American Association of University Professors Joint Statement on Rights and Freedoms of Students, because writing a good syllabus is hard.

Course Summary:

Date Details Due