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 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)
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.
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
Matt Pharr and Greg HumphreysPhysically Based Rendering: From Theory to Implementation
We are using Piazza for course communication. Here is a link to the Berkeley CS184/284A Piazza website.
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.
- 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.
Description on computing resources coming...
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.