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.
Mon / Wed / Fri 2:00 - 3:00 pm
North Gate 105
Tue 10am - 11am, Soda 320 (Lingqi)
Tue 11am - 12pm, Haviland 12 (Vivien)
Tue 2pm - 3pm, Etcheverry 3113 (Dillon)
Tue 3pm - 4pm, Moffit Library 150D (Pratul)
Tue 4pm - 5pm, Moffit Library 150D (Megan)
Tue 5pm - 6pm, Dwinelle 223 (Cecilia)
All office hours will be held in the VCL (5th floor Soda)
Mon 12pm - 1pm (Cecilia)
Tue 2pm - 3pm (Pratul)
Wed 1pm - 2pm (Lingqi)
Fri 3pm - 4pm (Megan)
Fri 4pm - 5pm (Dillon)
Fri 5pm - 6pm (Vivien)
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.
Matt Pharr and Greg HumphreysPhysically 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!
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 WyvillFundamentals 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 AkeleyComputer Graphics: Principles and Practice
We are using Piazza for course communication. Here is a link to the Berkeley CS184/284A Piazza website.
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 three. 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.
- Projects (4): 40% (Projects 1, 2, and 4 worth 8% each; Project 3 worth 16%)
- Midterms: 35% (17.5% each)
- Final Project: 20%
- Participation (class attendance, lecture slide comments on class website, Piazza): 5%
- Attend at least 2 out of 3 classes every week for 10 weeks
- Or write at least 3 well-thought-out comments on course slides per week
If you miss a lecture, fill out this form to request an excuse (unexpected conflict, illness, etc). If you are doing the lecture attendance option, but you miss more than half the lectures in a week without a reasonable excuse, you can make up for that week by adding 6 (not 3) well-thought-out comments on the website. You must add these within a week of the week in question.
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.
Once you are enrolled in the class, go to http://inst.eecs.berkeley.edu/webacct to register for an EECS instructional account. This will give you the ability to login with a username of the type cs184-xxx 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 330 (Hive) or ssh into the s349 machines.
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.