Berkeley CS184/284A - Spring 2017
Course Description

This course provides a broad introduction to the fundamentals of computer graphics. The main areas covered are modeling, rendering, animation and imaging. Topics include 2D and 3D transformations, drawing to raster displays, sampling, texturing, antialiasing, geometric modeling, ray tracing and global illumination, animation, cameras, image processing and computational imaging. There will be an emphasis on mathematical and geometric aspects of graphics, and the ability to write complete 3D graphics programs.

Time And Place
Mon / Wed Fri 3:00 - 4:00 pm
North Gate 105
Tue 2:00 - 3:00pm, Cory 289 (Lingqi)
Tue 2:00 - 3:00pm, Soda 405 (Ben)
Tue 3:00 - 4:00pm, Cory 289 (Kevin)
Tue 4:00 - 5:00pm, Moffitt Library 150D (Austin)
Tue 5:00 - 6:00pm, Dwinelle 215 (Lingqi)
Office Hours
All office hours will be held in the VCL (5th floor Soda)
Thurs 2:00 - 3:00pm (Lingqi)
Fri 2:00 - 3:00pm (Ben)
Fri 4:00 - 5:00pm (Austin)
Fri 5:00 - 6:00pm (Kevin)

Ren Ng
ren [at] berkeley [dot] edu
Soda Hall 535
Office hours: Mon / Wed 4-5 PM

Your TAs:
kvchen [at] berkeley [dot] edu
austinhle [at] berkeley [dot] edu
bmild [at] berkeley [dot] edu
lingqi [at] berkeley [dot] edu

A data structures course (e.g. CS 61B), C/C++ programming ability, fluency with development environment and debugging programs, knowledge of vectors, matrices basic linear algebra, calculus and trigonometry. Helpful: exposure to statistics, signal processing, and the Fourier transform. This site may be useful for you to pick up C++ quickly.

The primary source for the course will be the website, lectures, and section. Suggested supplementary reading and resources will be posted on the course readings page. The following textbooks are recommended, but optional, resources for you in this course and beyond:
  • Matt Pharr and Greg Humphreys
    Physically Based Rendering: From Theory to Implementation (Third Edition)
    This book (PBRT) is the book for learning about modern ray tracing techniques. It has a great website with full source code online for an advanced physically-based ray tracer. It even won an Oscar for its impact on the film industry!
    PBRT is available free online for you through Berkeley login: (Second edition, Third edition)
  • Pete Shirley and Steve Marschner with Michael Ashikhmin, Michael Gleicher, Naty Hoffman, Garrett Johnson, Tamara Munzner, Erik Reinhard, Kelvin Sung, William B. Thompson, Peter Willemsen, and Bryan Wyvill
    Fundamentals of Computer Graphics. A K Peters, 2009
  • John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, and Kurt Akeley
    Computer Graphics: Principles and Practice
Discussion Boards

We are using Piazza for course communication. Here is a link to the Berkeley CS184/284A Piazza website.

Projects and Exams

Projects. Students will complete four programming assignments. These assignments will be completed individually.

Final project. Students will propose and complete a self-selected final project. The final project will be done in teams of two. Each team will present the project orally during the final project presentation and produce a detailed report.

Exams. There will be 2 midterms. There is no final exam during finals week.


CS184 students:

  • Projects (4): 40% (Projects 1, 2, and 4 worth 8% each; Project 3 worth 16%)
  • Midterms: 35% (17.5% each)
  • Final Project: 20%
  • Participation (on-line comments, class, Piazza): 5%

CS284A students: Same items as above, but for your final project, you will be required to do a substantial project and submit a paper-style write-up. Instead of it being worth 20% of your grade, it will be worth 40% (everything else re-weighted accordingly).

Late days. Each student has five late-day points for the semester.

  • Late days apply to regular programming assignments only (not the final project).
  • You can extend a programming assignment deadline by 24 hours using one point.
  • If you do not have remaining late days, late hand-ins will incur a 10% penalty per day.
Hardware and Software

Once you are enrolled in the class, go to to register for an EECS instructional account. This will give you the ability to login with a username of the type cs184-[a-e][a-z] to the instructional Linux machines in Soda and Cory, either in person or remotely via SSH. If you do not have access to a personal computer with MacOS or Linux, then the best option is to use the computers in Soda 349.

Collaboration Policy

Students in CS184 are absolutely encouraged to talk to each other, to the TAs, to the instructors, or to anyone else about course assignments. Any assistance, though, must be limited to discussion of the problems and sketching general approaches to a solution. Each programming project team must write their own code and produce their own writeup. Consulting another student's or team's solution, or solutions from the internet, is prohibited. These and any other form of collaboration on assignments constitute cheating. If you have any question about whether some activity would constitute cheating, just be cautious and ask the instructors before proceeding!

You may not supply code, assignment writeups, or exams you complete during CS184 to other students in future instances of this course or make these items available (e.g., on the web) for use in future instances of this course (just as you may not use work completed by students who have taken the course in the past). Make sure to make repositories private if you use public source control hosts like github.


Special thanks to Kayvon Fatahalian for the template for the course website.