Advanced Computer Graphics

CSE 163 Advanced Computer Graphics, Spring 2017, Prof. Ravi Ramamoorthi Time and Place: M/W/F 3-3:50pm in CENTER 216


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 in 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. This year, the approvals to make this a regularly scheduled course, CSE 163 have been obtained. 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 163 is intended as a follow-on to CSE 167, and as such CSE 167 (or Math 155a) 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). The course also has minimal overlap with CSE 168 (Steve Rotenberg's class on rendering) that is taught simultaneously this spring, or the new virtual reality course (CSE 190 by Prof. Schulze). We have adjusted the timings to make it possible for you to take all 3 courses this quarter, if you want. (Other classes that don't overlap include CSE 165 and CSE 169 in winter; you are encouraged to take this course if you enjoyed those classes last quarter). In summary, the material in CSE 163 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. At the same time, CSE 163 is intended to be a one-stop advanced graphics course, covering all topics in the field, and following on naturally from CSE 167. 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, which will almost certainly be taught next year.

Course Format and Requirements

This is a regular lecture course, consisting of lectures on the relevant topics by the instructor. As opposed to CSE 167, this course is intended to have a more intimate feel, with a smaller class size, more in-class discussions and more independence and creative leeway in projects. We expect you to create websites to turn in your work, and do not have autograders. We also do not provide skeleton code, except for homework 1.

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 M/W/F at 3-3:50pm in CENTER 216. Instructor office hours will be after class on Mondays and Wednesdays in his office, EBU3B, Room 4118 until 4:30pm. The instructor can also be reached at any time by e-mail at to set up a time to meet.

The head teaching assistant for this course is Jiyang Yu Office hours will be Tue 10am, Thu 2pm. The other teaching assistant is Jingwen Wang Her office hours will be Friday, 4-5pm. The tutor is Jessica Tran Her office hours will be Wednesday, 2pm. All TA/tutor office hours will be held in the VisComp lab in Room 4127 of the CSE bulding, EBU3B. Please e-mail the TA/tutor to set up a different time individually if none of these work. The group e-mail for the TAs/tutors is

We have also created a Piazza newsgroup for the course. Please sign up as soon as possible (CSE 163 Spring 2017).

For resources on basic math, see linear algebra handouts from CSE 167, Brown handout and Free Text. For resources on Fourier analysis, the DSP guide may be useful (for example, chapters 8-13 on discrete fourier transforms). There are many other online links if you search the web.


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. (Please note that lecture links will work once the lectures are posted). Please also note that these lectures were originally designed and taught for a Tue/Thu twice a week course, but the registrar was unable to schedule a room for Tue/Thu. As such we continue to have two lectures per week, but spread over 3 class sessions on Mon/Wed/Fri. The final Friday session may be shorter some weeks and/or we may devote time to discuss optional advanced topics and current developments.


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 or other online resources, including those who took the course previously.

Please submit the assignments on TritonEd. The instructions below ask you to e-mail the TA as in previous years, which you can still do as a last resort. But, given the size of this year's class, we are requesting submission on TritonEd to keep easier track of assignments. If you e-mail us, we will simply re-direct you to TritonEd submission. Please note that both partners must separately submit on TritonEd, but will of course include a link to the same URL etc. If you are working in a group of two, please include your partner's name in your submission, along with the link to the URL. We will not levy a penalty if you get confused about these instructions, especially in the initial assignment, as long as we receive the assignment by the deadline through some mode of submission. However, you will likely make our life much simpler by following these directions and making your TritonEd submission.

Assignment 1: Image and Signal Processing (due Apr 28, 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.

Previous students have pointed out an obscure problem when using the MinGW development environment, which requires manually setting the OS flag to OS_WIN. This likely won't affect any of you, but in case the images are distorted, please come talk to the instructor or TA.

Assignment 2: Mesh Simplification and Progressive Meshes (due May 19, 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 Jun 14, 11:59pm; proposal and milestone due Jun 3, 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 Jun 3 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: Tue Apr 4 17:49:23 PDT 2017