CS 294-13, Advanced Computer Graphics, Profs. Ravi Ramamoorthi and James O'Brien


This course is intended to provide a graduate-level introduction to modern computer graphics. We will cover some of the basic background of 3D computer graphics in the areas of geometry, physical simulation and rendering. The course is intended to bring incoming graduate students or advanced undergraduates up to the research frontier, and prepare them for further work in the field. As such, at least half the material in the course will go over topics of current research interest, such as the physical simulation and coupling of solids and fluids, and precomputation-based methods for real-time rendering.

Below are some example computer-generated images, of the types of simulation, geometry, rendering and imaging topics we will be studying.

Roster and Mailing List

The list of students taking the course with photos is here. Thank you for sending your information.

Please get on the mailing list for the class, by sending mail to sympa@lists.eecs.berkeley.edu with subject subscribe cs294-obrien


CS 294 is intended for incoming graduate students interested in pursuing graphics research (or at least learning about the state of the art in computer graphics). It is the entry-level course for these students, and is generally mandatory for PhD students interested in pursuing research in computer graphics. We also welcome advanced undergraduates, who are interested in pursuing research or industry careers in the field. An obvious prerequisite is to have taken CS 184 (or the equivalent at another university) and have enjoyed/done well in it. Beyond this, strong interest in computer graphics and/or related fields is required, and we encourage those students to enrol. Students who are interested but concerned about the level and prerequisites should contact the instructors.

Relationship to Other Courses

We offer a full plate of computer graphics courses. I hope you will be enthusiastic about, and enrol in these offerings. Besides the undergraduate CS 184, there are a host of graduate classes in geometry, visualization, rendering and so on. More classes will be added in future years, initially as CS 294, then transitioning to permanent numbers. We intend this course (CS294-13, eventually to be renumbered CS 283) to be the entry-level class for the other special topics courses.

Course Format and Requirements

CS 294 is intended to be a regular lecture course, but adapted for advanced undergraduates and incoming PhD students. A syllabus/schedule is noted below. Grading will be based on 4 mainly programming projects, some of which can be done in groups of two (you are responsible in that case for finding partners, and also to ensure each person does their fair share; you can also choose to work individually if you decide). You are also welcome to propose your own research or implementation project in lieu of one or more of the assignments, subject to instructor approval. In this way self-directed students may pursue topics of special interest to them. Students are also welcome to take the class pass/fail, and should speak to the instructors in regards to requirements in this case. This may be a good option for more advanced PhD students seeking to learn topics outside their immediate research area. Auditors, who simply want to sit in on the course are also welcome; however, we prefer if you sign up for the course pass/fail instead.

Lectures and Logistics

The lectures will be Mondays and Wednesdays from 1-2:30pm in Soda Hall, room 310. The first class will be on Wednesday, Aug 26. There is no TA for this class, so you are welcome to directly e-mail the instructors re issues. Unless questions are specific, it may be helpful to e-mail both instructors, so they have a record. We may also try to set up a newsgroup for the class. Please feel free to also contact one of the instructors regarding talking about the class material. Since this is an advanced course, we intend these discussions to be more informal, and not need the formal scope of office hours.

Office Hours

Prof. Ramamoorthi will be available after class on Wed, from 3-5pm. You are encouraged to speak to him then, or after class on Monday. You may also e-mail him for an appointment or drop in at other times.


The course will be graded on the basis of four assignments, that primarily involve programming systems for rendering and simulation. These assignments can be done individually or in groups of two. If in a group, both partners will receive the same grade. You may have different partners for different assignments. The assignments are due on the dates listed, and will usually be submitted by creating a web site and sending the link to the instructors. The website should not be modified after the due date.

Since the time provided is 3-4 weeks for each assignment, we will not usually allow extensions unless you ask beforehand with a good reason. We prefer you instead turn in what you have as of the deadline. Since this is an advanced graduate class, we expect you to be organized, working through the semester constantly.

You are also free (and encouraged) to speak to the instructors about substituting a research or implementation project for one or more of the assignments. In general, you will be asked to provide a brief written plan of work, and the instructor can then approve that as a substitute for the assignment. This allows you to focus more clearly on topics of interest.

The four assignments will be available below. They are all fairly substantial (and we hope instructive) so you are encouraged to start early.

At this time, we make the first two assignments available (for the first half of the course on rendering). The last two assignments on geometry and animation/simulation will be available next month.

Assignment 1 on Monte Carlo rendering is available as a PDF file here. The due date is Oct 7, by 11:59pm.

For those students who have no previous experience in rendering/raytracing, an initial raytracer assignment, that is a prelude to assignment 1 (and counts for 30% of the grade for assignment 1) is available here. It should be turned in along with assignment 1, but we recommend you complete it by September 18. Most students will not need to do this assignment, instead starting with their existing raytracing code, but may want to take a brief look. An OpenGL previewer (that may be of interest to everyone) is available as a zip file (that should be unzipped in a separate directory) here.

Assignment 2 on Real-Time or Image-Based rendering is available as a PDF file here. The due date is Oct 28, by 11:59pm.

For those interested in the image-based (as opposed to real-time) rendering part above, an alternative practical project is suggested by the video and image processing laboratory. If you wish to do this project, please talk to the instructor beforehand, as well as Profs. Zakhor and Matt Carlberg.

Assignment 3 on Subdivision Surfaces is available as a PDF file here. The due date is Nov 23, by 11:00pm. (The due date is set to be before thanksgiving to allow you to enjoy the holiday).

Assignment 4 is on writing any physical simulation system (e.g. cloth). No formal PDF description available, considerable flexibility in choice of simulation system.


Topics to be covered include, but are not limited to


There are no books specifically required for this course. Much of the material comes from more recent work, embodied as papers or other such material. Chapters of books may be referenced as reading material and will generally be handed out in class. Papers will be linked, and can be downloaded from the website or the ACM digital library. The primary material will be these handouts and the lecture slides.

We are also requesting one student to scribe each of the lectures, to produce notes for reference, and also for the future.


The (tentative) course schedule is as follows.



Due Related Reading Lecture Notes
Aug 26 Introduction and Overview Biog Info (by Thu) Ravi PPT   Ravi PDF   James Keynote   James PDF
Aug 31 Intro to basic ray tracing PPT   PDF     Scribe: Jin Kwon
Sep 2 Illumination and Reflection Cohen-Wallace Ch 2    Torrance-Sparrow  Cook-Torrance PPT   PDF     Scribe: Albert Liu
Sep 9 Global Illumination and Rendering Equation Kajiya paper PPT   PDF     Scribe: Daniel Ritchie
Sep 14 Monte Carlo Integration Veach Thesis (see Ch. 2)       Stanford Course (Part 2) PPT   PDF     Scribe: Fu-Chung Huang
Sep 16 Monte Carlo Path Tracing Siggraph Course (Chs. 2,6)     Cook paper PPT   PDF     Scribe: Mason Smith
Sep 21 Recent advances in offline rendering PPT    PDF      Scribe: Nicholas Kong
Sep 23 Real-Time Rendering Heidrich    Cabral    Irr. Env.    Kilgard    Shadows PPT   PDF    Scribe: Terrence Zhao
Sep 28 Real-Time Rendering 2 Continue Shadow/Env Maps     Scribe: Aaron Hong
Sep 30 Image-Based Rendering and Light Fields Link to SIGGRAPH Course Notes PPT   PDF     Scribe: Kevin Lim
Oct 5 Frequency Analysis and Signal Processing PPT   PDF
Oct 7 Precomputation-Based Rendering Homework 1 Sloan 02   Ng 03   Ng 04   PRT Survey PPT   PDF     Scribe: James O'Shea
Oct 12 Representations of Visual Appearance PPT   PDF    Scribe: Eric Biggs
Oct 14 Imaging and Computational Photography SIGGRAPH Courses PPT   PDF     Scribe: Yiding Jia
Oct 19 Differential Geometry Basics 1 PDF    Keynote
Oct 21 Differential Geometry Basics 2 Continued differential geometry
Oct 26 Texture Synthesis (Maneesh) PDF     Scribe: Wesley Willett
Oct 28 HDR and Bilateral Filters (Maneesh) Homework 2 PDF
Nov 2 Splines PDF    Keynote
Nov 4 Subdivision Surfaces See Lecture 17 above.
Nov 9 Rotations and Inverse Kinematics PDF   
Nov 11 Holiday (No lecture)
Nov 16 Motion Capture PDF
Nov 18 Motion Capture See above
Nov 23 Physical Simulation Homework 3 PDF
Nov 25 Mass-Spring Systems See above
Nov 30 Rigid Body Dynamics See above
Dec 2 Fracture See above

Ravi Ramamoorthi