What you will learn

  • To design VR applications with Unity 3D
  • How OpenGL works and is used to create realistic looking applications
  • To transform coordinate systems for 3D interactions
  • Hardware components for VR and how they work
  • What makes a VR application successful
  • How to create your own VR app
  • How to use this VR program to develop augmented reality (AR) applications

Program Overview

Virtual reality (VR) is one of the hottest emerging technologies in the entertainment industry today. Millions of VR devices have been sold in the US alone, but most software developers have no formal training on the technology. This Professional Certificate program will teach you what VR devices exist, how VR technology works, and how to write software, often called VR experiences, for it.

You will learn effective 3D interaction techniques to use VR applications, how to write VR applications in WebVR and Unity 3D, and what features make a VR application successful. You will also learn the required mathematics for successful VR applications and how computer graphics are rendered onto a screen.

The final course in this program will allow you to apply the material learned in the previous courses to create your own VR app.

This program will provide you with a strong foundation to develop VR apps in all areas VR is used, including entertainment and gaming. This VR program also provides a solid foundation for people who want to develop augmented reality (AR) applications.

Courses in this program

1
Computer Graphics

Course Details
Learn to create images of 3D scenes in both real-time and with realistic ray tracing in this introductory computer graphics course.

2
How Virtual Reality Works

Course Details
Learn how virtual reality technology works by writing simple VR programs with WebVR.

3
Creating Virtual Reality (VR) Apps

Course Details
Learn the tools and techniques to develop your own professional VR app in Unity 3D.

Meet your instructors

Jurgen P. Schulze

Research Scientist and Adjunct Professor of Computer Science at UC San Diego Jurgen teaches computer graphics and virtual reality at UC San Diego. His research interests include applications for virtual and augmented reality systems, 3D human-computer interaction, and medical data visualization. He holds an M.S. degree from the University of Massachusetts and a Ph.D. from the University of Stuttgart, Germany. He spent two years as a post-doctoral researcher in the Computer Science Department at Brown University.

Ravi Ramamoorthi

Ravi Ramamoorthi is a Professor at the University of California, San Diego. He has taught computer graphics more than 10 times at Stanford, Columbia and UC Berkeley, and has been honored with a number of awards for his research, including the ACM SIGGRAPH Significant New Researcher Award and by the White House with the PECASE (Presidential Early Career Award for Scientists and Engineers). He was a finalist for the inaugural edX Prize for Exceptional Contributions in Online Teaching and Learning.

Program Endorsements

At Qualcomm we are working on the next generation of mobile computing devices. Virtual and augmented reality are an important part of it. We value software developers with a strong foundation in 3D computer graphics programming and an understanding of virtual and augmented reality technology. It is my belief that candidates who successfully completed the edX Professional Certificate for Virtual Reality Application Development will be at an advantage when applying to Qualcomm’s computer graphics groups.

Ning Bi , Senior Director of Technology Computer Vision Systems, Qualcomm Technologies, Inc.

At Sixense Entertainment Inc. we need software developers with strong knowledge in the areas of computer graphics and virtual reality. Applicants who successfully completed the edX Professional Certificate for Virtual Reality Application Development will have a significant advantage.

Amir Rubin , CEO, Sixense Entertainment Inc.

At Qualcomm we are working on the next generation of mobile computing devices. Virtual and augmented reality are an important part of it. We value software developers with a strong foundation in 3D computer graphics programming and an understanding of virtual and augmented reality technology. It is my belief that candidates who successfully completed the edX Professional Certificate for Virtual Reality Application Development will be at an advantage when applying to Qualcomm’s computer graphics groups.

Ning Bi , Senior Director of Technology Computer Vision Systems, Qualcomm Technologies, Inc.

At Sixense Entertainment Inc. we need software developers with strong knowledge in the areas of computer graphics and virtual reality. Applicants who successfully completed the edX Professional Certificate for Virtual Reality Application Development will have a significant advantage.

Amir Rubin , CEO, Sixense Entertainment Inc.

About this course

Build professional VR apps using Unity 3D, a powerful cross-platform 3D engine that provides a user-friendly development environment. In this course, part of the Virtual Reality Professional Certificate program, you will learn how to build a VR engine from the ground up, so you fully understand the entire rendering pipeline from 3D model to pixels in the VR display. We will also cover motion prediction, 3D stereo, lens distortion, time warp and other optimizations for a fluid, realistic VR experience.

You will also learn how to implement the most important VR interaction concepts such as selection, manipulation, travel, wayfinding, menus, and text input in Unity.

Unity is a GUI based programming environment, in which much of the programming can be done through dialog windows. It also supports scripts written in C#, which as we will show will allow for more complex VR functionality.

What you learn about VR programming in this course will help you write VR games, architectural walkthroughs, engineering simulations, 3D data viewers, medical training applications, and many more.

What you’ll learn

  • Develop professional VR apps using Unity 3D
  • Run Unity 3D applications in VR on a smartphone
  • Create a 3D environment from scratch in game engines
  • Select and manipulate objects with various input types
  • Move around a 3D world using unique locomotion methods
  • Create intuitive 3D menus to control applications
  • Design unique methods of 3D interaction
  • Input alphanumeric information, such as text and numbers, in VR
  • Build tools to help users navigate 3D environments
  • Learn key usability goals and pitfalls for Virtual Reality

Syllabus

  • Week 1: VR and Game Engines
  • Week 2: Physics and Gaze Interaction
  • Week 3: 3D UI and Locomotion
  • Week 4: 3D User Interaction
  • Week 5: Wayfinding and VR Input
  • Week 6: Testing and Special Topics

Meet your instructor

Jurgen P. Schulze

Research Scientist and Adjunct Professor of Computer Science at UC San Diego Jurgen teaches computer graphics and virtual reality at UC San Diego. His research interests include applications for virtual and augmented reality systems, 3D human-computer interaction, and medical data visualization. He holds an M.S. degree from the University of Massachusetts and a Ph.D. from the University of Stuttgart, Germany. He spent two years as a post-doctoral researcher in the Computer Science Department at Brown University.

About this course

Virtual reality is changing the way we interact with the world. But how does it work, what hardware is involved, and how is software written for it?

In this course, part of the Virtual Reality Professional Certificate program, we will explore the foundations of user-friendly virtual reality app development for consumers, as well as enterprise solutions. Both hardware and software aspects will be discussed. You will learn to evaluate devices necessary for virtual reality applications, what their differences are, how you write interactive applications for virtual reality, and we will discuss the most frequent problems you are going to need to solve to write virtual reality software.

In this course, you will explore the basics of virtual reality software through copying and modifying JavaScript to explore tradeoffs in VR application design. Extensive programming experience is not required.

By the end of this course, you will understand what is important for successful virtual reality software and learn how to write simple virtual reality programs themselves with WebVR.

This course is taught by an instructor with almost two decades of experience in virtual reality who leads the Immersive Visualization Laboratory at UC San Diego.

What you’ll learn

  • Types of virtual reality devices and their strengths and weaknesses
  • How virtual reality applications differ from other interactive software programs
  • What makes a virtual reality application successful
  • What to avoid when writing virtual reality software
  • Basic VR programming using WebVR

Syllabus

  • Week 1: VR definition and display systems
  • Week 2: 3D Tracking and Input Devices
  • Week 3: How to interact with the VR environment
  • Week 4: How to move around in VR
  • Week 5: 3D Menus and Text Input
  • Week 6: VR app design

Meet your instructor

Jurgen P. Schulze

Research Scientist and Adjunct Professor of Computer Science at UC San Diego Jurgen teaches computer graphics and virtual reality at UC San Diego. His research interests include applications for virtual and augmented reality systems, 3D human-computer interaction, and medical data visualization. He holds an M.S. degree from the University of Massachusetts and a Ph.D. from the University of Stuttgart, Germany. He spent two years as a post-doctoral researcher in the Computer Science Department at Brown University.

About this course

Today, computer graphics is a central part of our lives, in movies, games, computer-aided design, virtual simulators, visualization and even imaging products and cameras. This course teaches the basics of computer graphics that apply to all of these domains.

Students will learn to create computer-generated images of 3D scenes, including flybys of objects, make a real-time scene viewer, and create very realistic images with raytracing. We will start with a simple example of viewing a teapot from anywhere in space, understanding the basic mathematics of virtual camera placement. Next, you will learn how to use real-time graphics programming languages like OpenGL and GLSL to create your own scene viewer, enabling you to fly around and manipulate 3D scenes. Finally, we will teach you to create highly realistic images with reflections and shadows using raytracing.CSE167x teaches the foundations of computer graphics.

This course runs for 6 weeks and consists of four segments. Each segment includes an individual programming assignment:

  1. Overview and Basic Math (Homework 0: 10% of grade)
  2. Transformations (Homework 1: 20% of grade)
  3. OpenGL and Lighting (Homework 2: 35% of grade)
  4. Raytracing (Homework 3: 35% of grade)

This term, students who earn a total score of 50% or greater will have passed the course and may obtain a certificate from UC San DiegoX.

What you’ll learn

Understand the concepts of 3D graphics
  • Write and develop programs that create images of a 3D scene with lighting
  • Learn the basics of graphics programming with OpenGL and GLSL

FAQ

What is the format of the class?

The class will consist of lecture videos, brief exercises, and homework assignments. Each of the four segments of the course will have 2-3 lectures. Each lecture includes 3-5 lecture videos, which last between 10 and 20 minutes. There will be a brief exercise after each lecture video to help you test your understanding of the material.

Your score will be determined entirely by programming assignments for which you will receive immediate autograder feedback. You may submit your assignment to the autograder multiple times; only your last submission will count.

Programming projects are to be implemented individually without copying code from other students, largely identical online resources, or previous instances of the class. However, short of posting or sharing actual explicit code, you are encouraged to collaborate and discuss problems in the discussion forums.

Will the text of the lectures be available?

Yes. All of our lectures will have transcripts synced to the videos.

Do I need to watch the lectures live?

No. You can watch the lectures at your leisure. You can “work ahead” if you want to move faster than the due dates. Conversely, you can progress at a slower pace. Please note that certificates will only be awarded to students who obtain the requisite score by turning in assignments by the established deadlines.

How much does it cost to take the course?

Nothing: the course is free. If you expect to be doing a lot of graphics programming in the future, we would recommend the OpenGL and GLSL programming guides, but it is by no means required to purchase them. There are many free online resources for these topics, and we will be posting links to them.

What computer system do I need for the course?

The course material involves C++/OpenGL/GLSL programming that is portable. We provide skeleton code for all major platforms (Windows, Mac OS, Linux). This is a modern course involving programmable shaders, but any machine built in the last few years should be adequate. We provide many compilation hints and tips, and Homework 0 is to ensure you can compile and work with the autograder. You do need some kind of C++ development environment; we provide several resources to get you started for Homework 0. In the highly unlikely event you cannot get your machine to work, you will hopefully have adequate time to find another system.

Will I learn Maya/DirectX/3D Studio Max etc.?

This is a course on the foundations of computer graphics and covers concepts, not the intricacies of a particular software package. That said, you will be able to write complex interactive and offline 3D graphics programs at the end of the course in C++, OpenGL and GLSL.

Can I contact the Instructor or Teaching Assistants?

Yes, but not directly. The discussion forums are the appropriate venue for questions about the course. The instructors will monitor the discussion forums and try to respond to the most important questions; in many cases response from other students and peers will be adequate and faster.

I have a disability (visual/hearing etc.) Can I take the course?

In most cases, yes. We provide transcripts for all lectures. Many leading computer graphics researchers have had visual impairments like color-blindness. However, this being a computer graphics course that relies on visual image comparisons, we probably cannot provide adequate support for those who are legally blind.

I have a busy schedule this fall. Can I still take the course?

The course does require about 12 hours per week of work, and the assignments (where you are given two weeks) require the time. Certificates of achievement require a passing score. Of course, you are welcome to just go through the lectures or attempt some of the assignments if you are not interested in a certificate; we hope to provide something for everyone.

 

Meet your instructors

Ravi Ramamoorthi

Ravi Ramamoorthi is a Professor at the University of California, San Diego. He has taught computer graphics more than 10 times at Stanford, Columbia and UC Berkeley, and has been honored with a number of awards for his research, including the ACM SIGGRAPH Significant New Researcher Award and by the White House with the PECASE (Presidential Early Career Award for Scientists and Engineers). He was a finalist for the inaugural edX Prize for Exceptional Contributions in Online Teaching and Learning.

About this course

Build professional VR apps using Unity 3D, a powerful cross-platform 3D engine that provides a user-friendly development environment. In this course, part of the Virtual Reality Professional Certificate program, you will learn how to build a VR engine from the ground up, so you fully understand the entire rendering pipeline from 3D model to pixels in the VR display. We will also cover motion prediction, 3D stereo, lens distortion, time warp and other optimizations for a fluid, realistic VR experience.

You will also learn how to implement the most important VR interaction concepts such as selection, manipulation, travel, wayfinding, menus, and text input in Unity.

Unity is a GUI based programming environment, in which much of the programming can be done through dialog windows. It also supports scripts written in C#, which as we will show will allow for more complex VR functionality.

What you learn about VR programming in this course will help you write VR games, architectural walkthroughs, engineering simulations, 3D data viewers, medical training applications, and many more.

What you’ll learn

  • Develop professional VR apps using Unity 3D
  • Run Unity 3D applications in VR on a smartphone
  • Create a 3D environment from scratch in game engines
  • Select and manipulate objects with various input types
  • Move around a 3D world using unique locomotion methods
  • Create intuitive 3D menus to control applications
  • Design unique methods of 3D interaction
  • Input alphanumeric information, such as text and numbers, in VR
  • Build tools to help users navigate 3D environments
  • Learn key usability goals and pitfalls for Virtual Reality

Prerequisites

  • Basic linear algebra skills in vector and matrix mathematics, as well as coordinate system transformations
  • Basic programming experience in C, C++ or C#

Meet Your Instructors

Jurgen P. Schulze

Research Scientist and Adjunct Professor of Computer Science at UC San Diego Jurgen teaches computer graphics and virtual reality at UC San Diego. His research interests include applications for virtual and augmented reality systems, 3D human-computer interaction, and medical data visualization. He holds an M.S. degree from the University of Massachusetts and a Ph.D. from the University of Stuttgart, Germany. He spent two years as a post-doctoral researcher in the Computer Science Department at Brown University.