Advanced Computer Graphics

CSE 190 Advanced Computer Graphics, Winter 2016, Prof. Ravi Ramamoorthi Time and Place: Tu/Thu 9:30-10:50 in CSE 4140


This is an advanced computer graphics course, intended mainly for undergraduates with a strong interest in computer graphics, as well as Masters and PhD students specializing in the area, and related fields. Specifically, it is intended to be a regularly taught follow-on course to CSE 167 that all students who have interest in the area and have done well in 167 are encouraged to take, as part of a full-year sequence in computer graphics. The course is modeled after similar classes I have taught elsewhere, including CS 283 at Berkeley, and COMS 4162 at Columbia University. However, the UCSD course is specialized to the quarter system, and targeted more at advanced undegraduate material, rather than exploring research frontiers. Below are some example images from the types of topics we will be covering.


CSE 190 is intended as a follow-on to CSE 167, and as such CSE 167 or the equivalent is a pre-requisite (you should have taken 167 or equivalent at another university, found the material interesting and done well in the course). In practice, there will be almost no overlap with 167. The course also has minimal overlap with CSE 168 (Prof. Jensen's class on rendering) that is taught in the spring this year. (Other classes that don't overlap include CSE 165 in winter and CSE 169 in spring; you are welcome to take CSE 165 concurrently and we have adjusted the schedule to allow that). We intend for 167, 190, and 168 to form a full year fall/winter/spring sequence. The material in CSE 190 does not have any major overlap with other courses, although the initial signal-processing part may be a bit familiar if you have taken an image-processing course. The course is intended to be of interest to MS and PhD students in graphics, vision or robotics, in addition to advanced undergraduates. If you like this course, I would highly recommend also registering for the advanced graduate courses like CSE 272 and 274 next year.

Course Format and Requirements

This is a regular lecture course, consisting of lectures on the relevant topics by the instructor. Grading will be based entirely on 3 large programming projects. The last of these is a final project that provides some flexibility in design to students (while also providing a number of concrete options). The projects will cover signal/image processing, geometric modeling/meshes and real-time/image-based rendering.

Students taking the course for a letter grade are required to do all three projects (this may be in groups of 2; the requirements remain unchanged if working alone, although we will consider in assigning the final grade). Programs must be implemented entirely by students themselves; You may not copy source code from previous instances of this or a similar class, other students, or other online etc. resources. You may also not post your source code publicly, including to github or other public repositories.

Please note that there is minimal hand-holding on the projects. They are large assignments for which you are given 3-4 weeks, and they cannot be done at the last moment. You will need to start early and work steadily. No late days will be given except in exceptional circumstances. Since you are supposed to be working steadily, turn in what you have by the deadline, even if it is not perfect. If you do have extraordinary circumstances, please contact the instructor well *before* the assignment is due.

We will also consider graduate students who want to take the course P/NP or S/U. Two of the three projects are still required in this case. However, you may obtain credit for one ongoing project (another class or research) in lieu of the final project. Therefore, graduate students taking the couse P/NP of S/U (they may obtain the full 4 units) would in most cases need to do only one project in all (one of the first two regular projects) to receive a passing grade. Please speak with me if you are interested in this option.


Lectures will be held Tu/Th at 9:30-10:50am in EBU3B 4140. Instructor office hours will be at 11am on Mondays and Tuesdays in his office, EBU3B, Room 4118. The instructor can also be reached at any time by e-mail at to set up a time to meet.

The teaching assistant/tutor for the course is Jiyang Yu Their office hours are Monday, Wednesday 12-1pm (he is also available on Tu/Th, so please e-mail to set up a time if this doesn't work).

We have created a Piazza newsgroup for the course (I had to make the term Spring 2016 since Piazza doesn't seem to support quarters). Please sign up as soon as possible (CSE 190 Spring 2016).


Topics include an overview of many aspects of computer graphics, including the four main computer graphics areas of animation, modeling, rendering and imaging. Specific topics to be covered include


There are no books specifically required for this class. Readings including book chapters and papers are provided where needed for each lecture. Optionally, a comprehensive computer graphics book such as Computer Graphics Principles and Practice by Foley, van Dam et al. can be useful (a new edition recently came out).


The (tentative) course schedule is as follows.


The three programming assignments, on which evaluation will be based, are released below. Please note that you are not allowed to copy code from other students, including those who took the course previously.

Assignment 1: Image and Signal Processing (due Jan 29, 11:59pm)

The assignment includes a detailed specification available as a PDF file. From the length of the document (8 pages), it should be clear that you need to START EARLY on the assignment, checking with the course staff if you run into problems. However, don't be alarmed. One of the reasons for the length of the text is to specify the assignment clearly and reduce ambiguities. In principle, the programming assignment should be completely self-contained, viz. you should be able to understand and make progress simply by reading the assignment. Of course, the materials in lecture are important for fully understanding the relevant concepts. The work can be rewarding; after completing the assignment you will have an image processing program that can do many of the features of software like Photoshop or ImageMagick. In some cases, you will provide better antialiasing and resizing than widely available programs, thereby better understanding their algorithms and shortcomings.

The assignment isn't really meant to have skeleton code, but we are providing support with a Windows (Visual Studio 13) and Linux/Mac OS Zip file. The Windows version includes a visual studio project and the Linux/Mac OS version includes a Makefile that should allow compilation from a Unix Shell. In both cases, execution will be from the command line (for Windows, this is the old cmd.exe command line or equivalent from within Visual Studio, not the new Power Shell). In case compilation doesn't work or is not supported for your environment, you should be able to create your own project from the source and header files. Please see the instructor or TA IMMEDIATELY if you have issues with downloading and compiling the code. All the skeleton does is set up a basic template and parse options; we support it only minimally and you are welcome to write your own skeleton code. The distribution also includes a sample solution binary for Windows (can be run on Unix/Mac using wine or similar program). You may use the solutions for reference, although of course image processing programs do tend to differ, and I don't expect your solution to be pixel-identical.

Assignment 2: Mesh Simplification and Progressive Meshes (due Feb 22, 11:59pm)

The assignment is available as a PDF file. We have placed a number of models in OFF format here and most are also available in a ZIP file. The most relevant papers are Hoppe 96 and Garland 97. You may also look at Garland and Hoppe's web pages for additional support material. In particular, note the appendix in Garland's PhD thesis for implementation details on quadric error metrics.

Assignment 3: Final Project (due Mar 15, 11:59pm; proposal and milestone due Mar 4, 11:59pm)

The final project provides many choices, some of which have a concrete step-by-step structure, related to real-time and image-based rendering, and some of which are less well-specified and give you freedom to exercise your creativity. The assignment is specified here. To ensure you stay on track, a project milestone and proposal is due on Mar 4 at 11:59pm. The milestone should be a 1-2 page PDF or website saying what you have accomplished so far and showing at least one image, and a brief 1-2 para proposal of what you will do for the final report. Please do meet with the instructor/TA if you get stuck or need ideas.

Ravi Ramamoorthi
Last modified: Mon Feb 22 09:49:27 PST 2016