Skip to main content

Course Information

About CSE167x

CSE167x is an introduction to Computer Graphics. Students will understand the concepts of 3D graphics, and develop programs that create images of a 3D scene with lighting, using both real-time OpenGL and GLSL programming, as well as offline raytracing. The focus is on foundations and writing your own programs, rather than learning use of a specific software like Maya or Photoshop.  The current course has been upgraded to use modern OpenGL 3.1 with GLSL 330, the first major upgrade we have done in the past 5 years, and is designed to provide a completely modern introduction to computer graphics.  

The current iteration is offered as part of the professional certificate in virtual reality app development.  A knowledge of computer graphics, and in particular real-time OpenGL programming, is required to build virtual reality (VR) applications.    CSE 167x can be taken concurrently with the first course in the certificate, on how virtual reality works, and is a pre-requisite for the third and final course (starting Sep 1, 2017) on creating VR apps. Note that CSE 167x teaches general computer graphics concepts applicable to a range of applications, and is not limited to VR; it can also be taken standalone outside of the virtual reality certificate.

Course Overview

You can check out the syllabus page to see the topics we will be covering, along with lecture slides, videos and homework assignments. Briefly, the course is organized in 4 units, each with its own homework 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 course is self-paced, but with a final deadline on Mar 12, 2018.  When we have run timed versions in the past, Units/homeworks 0 and 1 have been allotted 1 week each, while the more challenging homeworks 2 and 3 were allotted 2 weeks each.  The whole course is intended to take 6-7 weeks.  However, that is only a guideline, and the current version of the course is self-paced with no specific deadlines, except for the final Mar 12 deadline for turning in all homeworks.  Since the timed version is intended to take 6-7 weeks, you have some flexibility in the current self-paced version, but not a whole lot (the full course still needs to be completed within 3 months), so please start early and work steadily.  The full course should provide a solid foundation for interactive and offline 3D computer graphics, on par with our local CSE 167 class (in fact, we will be using exactly the same assignments, and will be linking to our local class website for these assignments, owing to edX file size limits).

This term, students who earn a total score of 50% or greater will have passed the course and may obtain a verified certificate from UCSanDiegoX, provided they have paid the requisite fee and completed the verification process. We encourage all of you to enroll for the verified certificate; as per current edX policy, no honor code certificates will be available, although auditors are of course still welcome (all of the material and grading is available to auditors without any fee payment; only the certificate requires payment).  As with all edX classes, no numerical score or grade will be shown on the certificate.  Finally, this course is part of the first iteration of the professional certificate in virtual reality app development.  If you obtain verified certificates in all three courses, you can obtain a professional certificate.  We are very excited at UC San Diego to bring this first-ever professional VR certificate to the edX platform.  Note that you can also obtain a verified certificate for CSE 167x independently as well, and do not need to enroll in the other courses comprising the professional certificate in VR.

Please note that this course was previously offered on edX (Fall 2012, Spring, Fall 2013, Fall 2014) as UC BerkeleyX CS 184.1x (and some materials may still refer to this older course).  The instructor moved to UC San Diego in Jul 2014, and we are therefore retiring the old course, and are excited to be offering this as the inaugural UC San DiegoX class (the first timed iteration of CSE 167x was offered in Summer 2015; this is the fourth self-paced version of the course, after the first and second iterations in the past year, and the third iteration over this summer).

Compared to other online graphics courses, we focus more on the foundations, rather than teaching a particular programming platform like WebGL, or specific programming tricks.  However, you will still write substantial interactive graphics programs in OpenGL and GLSL, especially for homeworks 2 and 3, which we hope you will find very rewarding.

Video Lectures

The video lectures are available from the courseware and hosted on YouTube (apart from the newest OpenGL lectures which use a newer edX process that does not require YouTube). Since YouTube is not available in some countries, we also provide links for each lecture video, to download the mp4 video, slides and transcript, as well as half-resolution video for lower bandwidth. For this iteration of the course, transcripts for most lectures are also available in Chinese (courtesy XuetangX), and srt transcripts in both English and Chinese are downloadable.  Some students who want to download the videos for offline use have also reported that lower filesize videos can be obtained using keepvid. (The current automatic video download link from edX may make this step unnecessary).  Some students have reported, especially on low bandwidth connection that the edX player may stream lower quality videos (we have not been able to reproduce this issue); if so, you can try accessing them directly on YouTube.  Please also note that sometimes subtitles appear on-screen (as opposed to on the right in the edX viewer).  This is a YouTube (not edX) setting.  If this happens, simply click on the video to go to YouTube, and turn off the subtitles within YouTube [this will propagate to the edX interface].  With the new edX viewer, many of these steps have been streamlined and there should be no issues.  

On many lectures, I will derive equations or code, writing on the slides (I used a WaCom Cintiq 12WX tablet attached to a MacBook Pro). I believe this keeps the lecture engaging, as opposed to purely watching PowerPoint. However, I admit that my handwriting is not the best. For any relevant mathematical equation, the full typeset equation will always be shown, usually on the immediately next slide. The lecture slides PDFs you can download also contain all of the equations. The edX video viewer should support interactive transcripts, and resolutions from 240p to HD 720p. Finally, please note that there are multiple video segments for each lecture, and you can access them off the tabs on the top.  For convenience, the slides include the full lecture (all segments).

Prerequisites

  • C++ (knowledge of C or Java should be adequate to learn C++)
  • A computer (laptop or desktop) capable of running Homework 0
  • Basic math: vectors and matrices (a review is given in Lecture 2)
The course makes extensive use of OpenGL (and C++) in homeworks 0,1 and 2, mainly as a tool/language to understand and implement graphics concepts. While no prior knowledge of OpenGL is required, you will be expected to learn the basics and program in it largely from online documentation; learning/using a new language from searching online documentation is not unusual for experienced programmers.

Late Policy

Since the course is self-paced, there are no deadlines or late policy in place.  However, there is a final deadline for all work on Mar 12, 2018, 11:59pm Pacific Time (there is a 3-day grace period to account for unexpected issues, timezone conversion problems etc.)  Given the course starts on Sep 19, 2017 that provides almost 6 months (the timed version of the course is intended to take 6-7 weeks so you can continue to join late).  After that time, the current course will be closed, and we will likely start the next iteration after a short break.  

Experiences with the local class tells us that the homework 1 should take around 12 hours, and homeworks 2 and 3 should take about 24 hours. Your mileage may vary (one student in a previous edX class commented that time for homework completion increases geometrically as about 1, 3, 9, 27 hours for homeworks 0,1,2,3), but please plan ahead.

Textbooks and Computer Requirements

There are no textbooks required; the course is free. We post links to some free OpenGL and GLSL tutorials; you can search online for many others. You may use any computer system that supports programmable shaders on a graphics card (GPU). Most computers (including laptops) built in the last 5-10 years satisfy this requirement.  More precisely, your graphics card must support at least GLSL version 330 (OpenGL 3.1).  This is true for almost any NVIDIA or ATI GPU, but some old integrated graphics cards (Intel GMA 950 or similar) may not run the homeworks appropriately.  Given the variety of systems, this should only be taken as a guideline; you can test your machine by doing homework 0.

Grading

Grading will be based on the four programming projects.

Honor Code

You may discuss your homework and class material with classmates; in fact, we encourage you to do so (please avoid spoilers and explicit code on the forums, though!). However, all submitted work must be your own, and you must write all programs yourself (no copying code from classmates, previous instances of the class or online resources). You must only submit images for grading that were actually produced by your program. You must abide by the edX Honor Code. Please do not post your source code or programs on external websites or social media. In particular, do not post source code to a public repository on github or a similar site; use private/not searchable repositories, or simply do not use github.  

Communication

Announcements will be posted in the updates & news section. Our primary communication channel will be our interactive forum, where students and staff will all contribute to an ongoing discussion of the course material.

Course staff

Ravi Ramamoorthi

Ravi Ramamoorthi is the Ronald L. Graham Professor of Computer Science at UC San Diego, joining the faculty on Jul 1, 2014, where he is the founding director of the UC San Diego Center for Visual Computing.  He was earlier on the faculty of UC Berkeley (2009-2014) and Columbia University (2002-2008).  He has taught computer graphics more than 10 times at Stanford, Columbia and the University of California, 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 elected an IEEE fellow in 2017. He (and CSE 167x) was an inaugural finalist for the edX prize for exceptional contributions in online teaching and learning in 2016, and were again named a finalist in 2017.

Course Technical Staff

Former Berkeley students Nicholas Estorga and Brandon Wang have done a tremendous job developing the auto-graders and other materials used in the course, but have now graduated. Current PhD student Ling-Qi Yan will be maintaining the graders for this iteration.  Hoang Tran has upgraded the assignment frameworks to OpenGL 3.1.  A number of community TAs from previous local and online iterations of the course will also be answering questions on the forums.