Administrative Details and Information


James O'Brien

527 Soda

Office Hours: Tuesday 3pm-4:30pm


Jiamin Bai

545 Soda

Office Hours: Thursdays 3:30-5:30pm, Soda 510

Sections: Tuesday 2pm-3pm, Tuesday 3pm-4pm

Brandon Wang

510 Soda

Office Hours: Friday 1-2pm, Soda 651

Sections: Tuesday 10am-11am


You should read this detailed Course Information document.

We are using Piazza as the primary method of communication. Please sign up for the Berkeley Spring cs184 class.

Please see the Course Schedule for a detailed syllabus and lecture slides.

Any administrative questions or questions not related to class material can be directed at

If you are interested in graphics research at UC Berkeley more information can be found here.

We encourage you to make use of the Piazza newsgroup. Feel free to send the GSIs or instructor an email, or attend office hours if Piazza doesn't solve your problem, or if you would like to discuss course material. Please note that Piazza will generally have the fastest response time.

Times and Locations

CS184: Foundations of Computer Graphics

This course is an introduction to the foundations of 3-dimensional computer graphics. Topics covered include 2D and 3D transformations, interactive 3D graphics programming with OpenGL, shading and lighting models, geometric modeling using B├ęzier and B-Spline curves, computer graphics rendering including ray tracing and global illumination, signal processing for anti-aliasing and texture mapping, and animation and inverse kinematics. There will be an emphasis on both the mathematical and geometric aspects of graphics, as well as the ability to write complete 3D graphics programs. This course is offered every semester (the instructor may vary from offering to offering, as may the content somewhat).

This course will hopefully be a fun one, but it will require considerable implementation and understanding. The required programming for some of the assignments will be challenging for most students. Debugging and working with graphical programs requires substantial work. The main advice is to START EARLY on all of the programming assignments and ask the instructor or GSIs if you run into any difficulties; we are always ready to help. If an assignment provides 2 or 3 weeks to do it, it usually means you need all 2 or 3 weeks, and cannot start a few days before the deadline. Most students should successfully complete the assignments, and find the course very rewarding and fun, with the ability to understand the theory behind and implement 3D graphics programs. Some students every year are able to use the course as a springboard to pursue graduate study in computer graphics, or to take up positions in the graphics industry.

This is the introductory graphics course. More advanced follow on courses are available. In particular, we strongly recommend those who do well in and/or enjoy this class to take CS 283 the next semester (do not worry about the fact that CS 283 is technically a graduate course; this course is ample preparation, and the grading is in fact usually easier in graduate classes). We also offer special topics CS 294 courses almost every semester.

Pre-requisites for the course:

  1. Solid C/C++ programming background. (If you only know Java, you may want to consider using this course as an opportunity to become familiar with C++.)
  2. Linear algebra and some basic mathematical skills (only high school math is strictly required and we have a review lecture).

Prior knowledge of computer graphics, OpenGL or GLSL is NOT required.

(We are aware that not all students are familiar with C/C++, but most pick it up without difficulties. If you are concerned about this aspect, we recommend that you study up before the class and speak to the GSIs to come up to speed quickly. We do not spend any time in class teaching C/C++, since this is an upper division course).