CS 4803/8803 3DU Syllabus

1. Outline

2. Course Description

This class will cover the design and implementation of 3D user interfaces on a variety of devices, from desktops and laptops to phones and tablets to head-worn AR and VR displays. The primary focus will be immersive 3D interfaces and interactions. Topics will include the history of 3D UIs and VR, 3D applications, design and implementation of interaction techniques, with some discussion of human factors, design, security, privacy, ethics.

For the initial offering in the spring of 2020, students will do assignments and projects using traditional 2D devices (computers, phones and/or tablets) and modern VR head-worn displays. Programming and development will be done with web-based technology (Javascript/Typescript, WebGL, WebXR, and tools like three.js and babylon.js).

Students must have experience doing 3D programming. Background in HCI is a plus.

For undergraduates in CS4803-3DUI, CS 3451 is required, and CS 3750 is recommended (but not required). This class will count as a pick-list course for either the Media or People Threads. I taught CS 3451 this past fall, the material is on github here.

For graduate students in CS8803-3DUI, either CS6491 or an undergraduate course in computer graphics is required, and a graduate or undergraduate HCI class in recommended (but not required). This class will count as an elective in either the Computer Graphics or HCI Specializations.

3. Course Goals

  • Understanding of the architectural and algorithmic principles behind the development of the 3-dimensional graphical user interface
  • Experience in modern 3D toolkits and development environments
  • Exposure to a variety of advanced topics for 3D, VR, and AR systems

4. Required Textbooks

We will use two textbooks, both of which are available online via Georgia Tech library subscriptions:

  1. 3D User Interfaces, Second Edition, by Joseph LaViola, Ernst Kruijff, Ryan McMahan, Doug Bowman, and Ivan Poupyrev. Available via O’Reilly Learning here.
  2. Understanding Virtual Reality: Interface, Application, and Design, 2nd Edition, William R. Sherman and Alan B. Craig, 2018. Available via Science Direct here.

5. Grading

Summary: 30% assignments, 45% project, 25% exams and quizzes.

Component Grade
Homework Assignments: 30% (5% for warm-up project, 25% for remaining projects)
Project (5 deliverables) 45%
Quizzes and in class activities: 5%
Midterm exam: 10%
Final exam: 10%

(see Attendance section below for information about in-class pop-quizzes and/or activities.)

For final letter grades, an overall average of 90-100 will result in an A, between 80-89 a B, between 70-79 a C, between 60-69 a D.

Students taking the class pass/fail must receive a C or better to pass. Students auditing the class will not be required to complete homework or exams (nor are they expected to do these assignments, so that the instructor and TAs can devote grading time to students taking the class for a letter grade or P/F).

6. Homework Assignments

3D interaction and interactive system creation are learned best by programming. Each student will complete two or three medium-sized programming projects, written in an object-oriented superset of Javascript called Typescript. At the instructor’s discretion, some of these projects may be broken into two separate sub-parts that are due on different days.

There will be one additional warm-up project handed out during the first week of class, and each student must do this warm-up project entirely on their own. For all of the other projects, students may talk with one another about any of the concepts required for the programming projects, but each student must perform the actual programming of this assignment on their own.

Students must write all of the code for each assignment themselves without any form of code sharing by electronic, written, verbal or any other means. The only code from others that may be used in these assignments are those that are given by the instructor. Note that it is impossible to get an A in this course without completing all of the programming assignments.

7. Human Subjects Training

Before students start working on their projects they will need to provide documentation regarding successful completion of CITI IRB Training — specifically the following courses need to be completed (or refreshed):

  • Responsible Conduct of Research (1 — Basic Course)
  • Human Research (Group 2 Social / Behavioral Investigators and Key Personnel — 1 Basic Course)

Students will have three weeks (at the beginning of the semester) to complete the IRB training and submit their certificates (PDF) through Canvas (see the project page for more information).

The CITI IRB online training can be accessed through GT’s Research Integrity site and should not take longer than two hours to complete. Students who already have valid, that is not expired, certificates for the aforementioned courses can submit their certificates directly.

Important: Without valid CITI certification students cannot work on their projects and as such will not be able to fulfill the requirements of all project-related assignments!

8. Projects

Graduate students in the class will be expected to complete a multi-part project during the semester, in teams of two. The project structure will be presented in class. The project consists of separate milestones, including a project proposal, implementation, demo, and final writeup. While I can try to help facilitate team matching, it is students’ responsibility to find a project partner early in the semester (well before the first milestones).

9. Attendance

You are expected to attend class. You are expected to know anything discussed in class. If the instructor clarifies an assignment or discusses anything else during class, you are expected to know it. We will try to update the website as appropriate, but do not guarantee this will happen. If you miss class, check with your classmates to find out what you miss.

A good portion of the learning in any upper level or graduate class comes from intelligent discussion during the class. If you don’t attend class, you cannot participate, and your performance may reflect that. I expect that each student will make an effort to attend all lectures and contribute constructively to the discussion.

Throughout the semester, I will give pop quizzes on the readings or activities we do in class, or do other in-class activities (possibly including programming). These will be graded and factored into the 5% quizzes part of the grade.

10. Accommodations for Students with Disabilities

If you are a student with learning needs that require special accommodation, contact the Office of Disability Services (via web or at (404)894-2563), as soon as possible, to make an appointment to discuss your special needs and to obtain an accommodations letter. Please also e-mail me as soon as possible in order to set up a time to discuss your learning needs.

11. Anti-Harassment Policy

We will implement a strict anti-harassment, zero tolerance policy in line with the institution’s general anti harassment policy as it is defined here.

12. Academic Integrity, Collaboration and Web Resources

Students are expected to follow Georgia Tech’s code of academic conduct. All code submitted for homeworks in this class must be written by you alone.

  • Do not give your code (or a portion of your code) to another student; do not allow another student to look at your code; do not look at or accept anyone else’s code.
  • Do not upload your code to public GitHub repositories or place it on repositories that may be accessible to other students.
  • You can (and are encouraged to!) ask other students questions about how they did the assignment, and explain using words, pictures, and diagrams how you did the assignment, as long as you do not share code. You can also look up resources on the Internet that may help. In these cases, please list details about who helped you or the URLs of what resources you used in the comments of your assignment. See “Use of Code You Did Not Write Yourself” below.

The Homework 0 assignment provides more details on the collaboration policy for this class; completion of this Homework is a necessary prerequisite for all of the other assignments in the class.

I am required to forward all suspected cases of academic misconduct to the Office of Student Integrity, where they will be pursued to resolution. This is a very unpleasant process for all involved, so please do not put us in this situation.

If in doubt, ask.

13. Exams

I expect all students to show up for exams and submit homeworks in a timely manner. No make-up exams will be given without authorization by the Institute, or written notice of an emergency (doctor’s notice if in the hospital, for example), and IN ADVANCE if possible. Providing this evidence is the responsibility of the student.

14. Contacting the Instructor and TAs

The instructor and TAs are available via email, Piazza and Teams. However, please do not expect immediate answers on any of these forums, especially nights and weekends. We will check the various forums regularly, especially 9am-4pm M-F, and endeavor as a group to reply promptly. But please remember that each of us also has classes, assignments, work and other things that we will also need to focus on.

That said, if a message has not been replied to in more than a day (during the week), please feel free to send a “polite reminder” if you are still in need of a reply.

15. Use of Code You Did Not Write Yourself

We will tell you explicitly what sample code and resources you may use in your assignments. Aside from this, you are expected to implement the “intellectual core” part of each assignment yourself; extra libraries (e.g., 2D web layout libraries like jquery, or audio libraries if you wish to add sounds) can be used if you desire, but they should not solve or simplify a core part of the assignment.

If you find an library or sample code from somewhere that you want to use (such as in a tutorial or web page or on github), you should verify with the instructor and/or TA that it is acceptable before using it, and then document what you got and where.

The goal of the assignments is for YOU to demonstrate that you have learned how to do the relevant work, not for you to piece together other peoples code.

If in doubt, ask.

16. Laptops

You will be required to bring a laptop to class, and the required web development technology installed on it. We will occasionally do in-class programming exercises. Please ensure you have a laptop that supports the necessary technology.

When we are not using them for in-class work, I may ask students to close them. While I am inclined to let people do what they want with their time (and grade their results), I have received complaints from students in the past about how distracting it is to have students browsing the web/facebook/twitter, watching videos, and playing games in class. And here’s a nice article about a study documenting the negative impact on performance of students who are seated near folks using laptops (even if they aren’t).

Please be courteous to your fellow students. To put this another way: I view using social media and unrelated web browsing as equivalent to talking on a phone in class. If you are doing it and bothering me or others around you, I may ask you to leave class for the day.

17. Late Policy

The grade on a late assignment will drop 5% of the maximum grade for the assignment for each day beyond the due date (e.g., if an assignment is graded out of 10, you will lose 0.5 points per day). A day ends exactly 24 hours after the assignment is due. Assignments will typically be due at 11:59pm the night before the Tuesday/Thursday they are listed on the syllabus (the exact date and time will be shown on the assignment itself).

Assignments can be submitted up to three days late. No late assignments will be accepted four days or later after the date and time that the assignment was due.

Comments