CS 283, Advanced Computer Graphics Algorithms and Techniques, Prof. Ravi Ramamoorthi


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/animation, imaging 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 subdivision, 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 class roster is available here . The TA for this course is Jiamin Bai bjiamin@eecs.berkeley.edu

Final Projects

Congratulations everyone for a really great job on the final projects.


CS 283 is intended for advanced undergraduates and incoming graduate students interested in learning about the state of the art in computer graphics. While it is mandatory for PhD students intending to work in computer graphics, it is likely to also be of significant interest to those with interests in computer vision, robotics or related fields, as well as those in other areas with some interest. It is the entry-level course for these students. We also welcome advanced undergraduates, who are interested in pursuing research or industry careers in the field, or just interested in learning more. 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 instructor. Undergraduates may need authorization to officially enrol for the course online; if so, please let me (the instructor) know, and I will be happy to provide it.

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 (now permanently numbered CS 283) to be the entry-level class for the other special topics courses. The course has been taught once before (jointly with Prof. O'Brien) as CS 294-13 in Fall, 2009.

Course Format and Requirements

CS 283 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 programming projects, all of which can and should 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, though the requirements will remain the same in this case). In relation to those who took CS 184 with me, the scope of each project is similar to assignments 3 and 4 of CS 184, and the workload is therefore similar (one less project but all of large scope; no midterm or final, but the material is obviously more advanced).

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. Also, students who are more interested in (say) geometry than rendering, could pursue additional projects in that space. 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 Monday, Aug 30. The TA for this class is Jiamin Bai; you are welcome to directly e-mail the instructor or TA re issues. We may also try to set up a newsgroup for the class. Please feel free to also contact the instructor 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. In general, however, 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 modeling, rendering and animation or imaging. 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 instructor 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 are all available below. They are all fairly substantial (and we hope instructive) so you are encouraged to start early.

Assignment 1 on Mesh Simplification and Progressive Meshes is available as a PDF file here. The due date is Oct 7, 11:59pm.
We have placed a number of models here , and most are available in a ZIP file. The most relevant papers on which this assignment is based are by Hoppe 96 and Garland and Heckbert 97. You are also encouraged to look at the web pages of Garland and Hoppe for additional support material. In particular, note the appendix in Garland's PhD thesis for implementation details on quadric error metrics.

Assignment 2 on Monte Carlo rendering is available as a PDF file here. The due date is Oct 28, 11:59pm.
For those students who have no previous experience in rendering/raytracing, an initial raytracer assignment, that is a prelude to assignment 2 (and counts for 30% of the grade for assignment 2) is available here. It should be turned in along with assignment 2, but we recommend you complete it even before assignment 2, in the first 2 weeks of the course (set yourself a due date of Sep 16, 11:59pm). 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 3 on Real-Time or Image-Based rendering is available as a PDF file here. The due date is Nov 18, 11:59pm.

Assignment 4 is the final project, and is available as a PDF file here. The due date is Dec 13 (Monday), 11:59pm.


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.

For last year's edition of the course, we asked one student to scribe each lecture. For those parts of this year's edition that follow a similar structure, these scribe notes, available from last year's website may be useful. (Please note that we have reordered the syllabus somewhat).


The (tentative) course schedule is as follows, with linked lecture slides below. Assignments are due after the day listed below, usually on Thursday. The course will cover the main aspects of computer graphics, namely, modeling, rendering, animation and imaging in that order.

We will spend the first two weeks on the introduction and overview, as well as reviewing some basic concepts (basic ray tracing, Fourier analysis and sampling for imaging, and basics of 3D objects and meshes). For those with no previous rendering experience, a basic raytracer should be written in the first 2 weeks.

Therafter, we will start on geometric modeling (assignment 1), describing mesh data structures and mesh simplification. We will also discuss subdivision (which is one possibility for assignment 4). Our next unit will focus on rendering (assignments 2 and 3). We will start with basic global illumination and path tracing, and then discuss real-time and image-based rendering. Many lectures will discuss topics of current research interest in offline and real-time rendering, as well as physically accurate materials. We will then move to animation and physical simulation, starting with basic geometric concepts, kinematics, and mass-spring and rigid body simulation, as well as motion capture (writing a physical simulation is one choice for the final project). Our final lectures will be on imaging and computational photography.



Due Related Reading Lecture Notes
Aug 30 Introduction and Overview Biog Info (by Thu) PPT   PDF  
Sep 1 Intro to basic ray tracing PPT   PDF    
Sep 8 Fourier Analysis and Sampling FvDFH 14.10 PPT   PDF    
Sep 13 3D objects and meshes PPT   PDF    
Sep 15 Mesh Data Structures PPT   PDF    
Sep 20 Mesh Simplification and Progressive Meshes Hoppe 96 PPT   PDF    
Sep 22 Quadric Error Metrics Garland 97 PPT   PDF    
Sep 27 Subdivision Stam 98   Siggraph 00 Notes PPT   PDF    
Sep 29 Illumination and Reflection Cohen Wallace   Torrance Sparrow   Cook Torrance PPT   PDF    
Oct 4 Global Illumination and Rendering Equation Kajiya paper   PPT   PDF    
Oct 6 Monte Carlo Integration Assignment 1 Veach Thesis (Ch. 2)   Stanford Course (Part 2)     PPT   PDF    
Oct 11 Monte Carlo Path Tracing Siggraph Course Notes    Cook 84 PPT   PDF    
Oct 13 Recent Advances in Offline Rendering PPT   PDF    
Oct 18 Real-Time Rendering Heidrich   Cabral   Envmap   Shadows 1   Shadows 2 PPT   PDF
Oct 20 Real-Time Rendering 2 Continue Shadow/Env Maps
Oct 25 IBR + Light Fields Siggraph 00 Course Notes PPT   PDF
Oct 27 Facade, Inverse GI Assignment 2 Facade   IGI
Nov 1 Frequency Analysis + Signal Processing PPT   PDF
Nov 3 Precomputation-Based Rendering Sloan 02   Ng 03   Ng 04   PRT Survey   PPT   PDF
Nov 8 Basic Geometric Concepts PPT   PDF
Nov 10 Rotations See above
Nov 15 Inverse Kinematics PPT   PDF
Nov 17 Physical Simulation 1 Assignment 3 Siggraph Course Notes PPT   PDF
Nov 22 Physical Simulation 2 Modal Analysis Paper PPT   PDF
Nov 24 Motion Capture See final slides for reading list PPT   PDF
Nov 29 Imaging and Computational Photography SIGGRAPH Courses PPT   PDF
Dec 1 HDR, Texture Synthesis, Bilateral Filters Assn 4 (by Dec 13) PPT  

Ravi Ramamoorthi