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.
You can view last semester's offering of the course here.
Times and Locations
TuTh 9:30AM - 11:00AM, Li Ka Shing 245
|Tue 11-12||Moffit Library 106||Jose|
|Tue 11-12||Soda 310||Vivien|
|Tue 3-4||Wheeler 120||Jessie|
|Tue 4-5||Wheeler 200||Varsha|
|Tue 5-6||Wheeler 204||Seth|
|Tue 5-6||Haviland 12||Dorian|
|Wed 3-4||Moffit Library 103||Henry|
|Wed 3-4||Etch 3107||Xiling|
|Wed 4-5||Dwinelle 182||Peter|
|Wed 4-5||Wheeler 202||John|
We will use Piazza for course communications and discussion.
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.
Assignments and Exams
Students will be assigned four programming assignments. These assignments must be completed individually.
Students will propose and complete a self-selected final project. The final project will be done in teams of three. Each team will present the project orally during the final project presentation and produce a detailed report.
There will be 2 midterm exams. There is no final exam for this course.
- Projects (40%):
- Projects 1, 2, and 4: 8% each.
- Project 3: 16%
- Midterms (35%):
- 17.5% each
- Final Project (20%)
- Participation (5%)
- See below for our participation policy
For cs284a Students:
Grading items are the same 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).
Each student has five late days for the semester.
Late days apply to regular programming assignments only and 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. Late days are meant to account for submission issues and other unforseen circumstances.
Participation credit can be earned by commenting on lecture slides on the course website. You must contribute at least 3 well-thought-out comments on course slides per week
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:
Fundamentals of Computer Graphics
Authors: 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
- Available on Amazon
Physically Based Rendering: From Theory to Implementation (Third Edition):
Authors: Matt Pharr and Greg Humphreys
- 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)
- Also available on Amazon
Computer Graphics: Principles and Practice
Authors: John F. Hughes, Andries van Dam, Morgan McGuire, David F. Sklar, James D. Foley, Steven K. Feiner, and Kurt Akeley
- Available on Amazon
Github OAuth Notice
We use Github's OAuth authentication mechanism both as a simple method to sign in, and to obtain a token which we can use to let you verify your assignment submissions as we see them for your own sanity.
Unfortunately, Github's permissions for OAuth applications have very poor granularity: the only way for us to be able to view the details of your private course repos is to also to have full write access to your repositories.
Your privacy is important to us. We do not use your API token to do anything other than access your assignment repositories within the
cal-cs184-student organization, and even then in only a readonly context. If access permissions are a concern for you, feel free to ask us about how we use and protect your token.
This is a known problem and something Github is aware of.
Many thanks to Dillon Yao (Spring 2017 TA) for developing this course website.