This is an archive of a past semester of this course. Go to the current semester.
Berkeley CS184/284A - Spring 2016
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 1:00 - 2:30pm
Soda Hall 306
Section 1: Wed 5:00 - 6:00pm, B56 Hildebrand (Mildenhall)
Section 2: Wed 6:00 - 7:00pm, B56 Hildebrand (Mildenhall)
Section 3: Thu 4:00 - 5:00pm, 458 Evans (Sun)
Section 4: Thu 5:00 - 6:00pm, 106 Moffitt (Sun)

Ren Ng
ren [at] berkeley [dot] edu
Soda Hall 535
Office hours: Mon 2:40 - 3:30 pm and Wed 2:40 - 3:30 pm

Your TAs:
sunweilunjwilson [at] berkeley [dot] edu
Office hours:
Thurs 10:30am - 12:00 pm
Location: Soda Hall 510 / 545
bmild [at] berkeley [dot] edu
Office hours:
Tues 4:00 - 5:30 pm
Location: Soda Hall 510 / 545

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.

Reading assignments and resources will be posted on the course Readings page . The textbook for the class is:
  • 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
In addition, the following two textbooks will be put on reserve in the library for your use.

  • 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
  • Matt Pharr and Greg Humphreys
    Physically Based Rendering: From Theory to Implementation
    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!
Discussion Boards

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

Assignments, Projects, and Exams

Programming assignments. Students will complete four programming assignments. These assignments will be performed individually.

Making per-lecture comments. Each student must individually contribute two interesting comments per week using the course web site.

Final project. For the fifth assignment, students will propose and complete a self-selected final project. The final project can be performed individually or in groups of two. Each team will present the project orally during the Final Project Presentation and produce a detailed write-up.

Exams. There will be an in-class midterm and a final exam.


CS184 students:

  • Programming Assignments (4): 40%
  • Exams: 15+20 = 35%
  • 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 (up to three days per assignment).
  • No assignments will be accepted more than three days after the deadline.
Hardware and Software

Description on computing resources coming...

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.