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.
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.
- Overview and Basic Math (Homework 0: 10% of grade)
- Transformations (Homework 1: 20% of grade)
- OpenGL and Lighting (Homework 2: 35% of grade)
- Raytracing (Homework 3: 35% of grade).
This course is self-paced. 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. However, that is only a guideline, and the current version of the course is self-paced with no specific deadlines. The full course should provide a solid foundation for interactive and offline 3D computer graphics, on par with our local CSE 167 class.
This term, students who earn a total score of 50% or greater will have passed the course and may obtain a free honor code certificate from UCSanDiegoX. As with all EdX classes, no numerical score or grade will be shown on the certificate.
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 first self-paced version of the course).
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, that we hope you will find very rewarding.
The video lectures are available from the courseware and hosted on 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. 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].
On many lectures, I will derive equations or code, writing on the slides (I use 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).
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.
- 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)
Since the course is self-paced, there are no deadlines or late policy in place.
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 the Fall 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 120 (OpenGL 2.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 will be based on the four programming projects.
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.
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.
Ravi Ramamoorthi is a Professor at UC San Diego, joining the faculty on Jul 1, 2014, where he is the 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).
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. A number of community TAs from previous local and online iterations of the course will also be answering questions on the forums.