Policies
Table of contents
- Course Description
- Times and Locations
- Prerequisites
- The Big Idea
- Assignments and Exams
- Grading
- Late Policy
- Participation Policy
- Policy on Use of Generative-AI Tools
- Inclusion
- Textbook
- Learning Cooperatively *
- A Parting Thought *
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.
Times and Locations
Lecture
Lectures are 2:00-3:30PM on Tuesday & Thursday, in Zoom. Lecture will be recorded, and videos will be linked on the course website shortly after each class.
Discussions
We don’t have formal discussion signups, so feel free to attend any section listed below! We’re offering 4 general sections, each of which are an hour long.
| Time | Location | TA |
|---|---|---|
| Wednesday 3PM - 4PM | Zoom | Jessica |
| Wednesday 4PM - 5PM | Zoom | Swetha |
| Thursday 4PM - 5PM | Zoom | Sriram |
| Friday 3PM - 4PM | Zoom | Atsu |
Office Hours
All Office Hours will take place on Zoom. Click the location link to join.
| Time | Location | TA / Instructor |
|---|---|---|
| Monday 3PM - 5PM | Zoom | Atsu |
| Monday 7PM - 9PM | Zoom | Karina |
| Tuesday 3:30PM - 5:30PM | Zoom | Jessica |
| Thursday 5PM - 7PM | Zoom | Sriram and Arnav |
| Friday 5PM - 7PM | Zoom | Swetha and Joel |
Communications
We will use Ed for course communications. Check out our calendar to see scheduled events:
- Link to add course calendar to your personal calendar
- Link to view course calendar
Prerequisites
We will assume 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.
The Big Idea
Our policies are designed with the aim of allowing you students to increase focus on learning rather than grading, encourage you to learn through collaboration, and entrusting you with building and maintaining academic integrity in our class community. The key points are:
- Collaboration in pairs is allowed, and encouraged, on the assignments.
- The class will not be graded on a curve. Your performance in class is your own.
Assignments and Exams
Assignments
Students will be assigned four programming assignments. These assignments may be done in pairs.
If you’re auditing the class and would like access to assignment checkpoints, you can join the CS 184/284A Auditors Gradescope class with the join code R5XDDR.
Final Project
Students will propose and complete a self-selected final project. The final project will be done in teams of four. Each team will present online and produce a final video and detailed report. Final project deadlines are TBD.
Exams
There will be no in-class exams, and all exams will be open-book and take-home. Each exam will be open for one week, released on Monday at 12:00AM and due on Friday at 11:59PM. Additional logistics will be released closer to the exam dates. There is no final exam for this course.
- The first exam is scheduled for the week of Monday, March 9th - Friday, March 13.
- The second exam is scheduled for the week of Monday, April 27th - Friday, May 1.
Grading
Your course grade is computed using a point system with a total of 100 points.
For CS184 Students:
- Four programming assignments, worth 12.5 points each.
- Two exams, worth 10 points each.
- Final project, worth 25 points.
- Participation, worth 5 points. Participation policy below.
There are a handful of extra credit points available over the semester.
Each letter grade for the course corresponds to a range of scores:
| Grade | Points |
|---|---|
| A | >= 93 |
| A- | >= 90 |
| B+ | >= 87 |
| B | >= 83 |
| B- | >= 80 |
| C+ | >= 77 |
| C | >= 73 |
| C- | >= 67 |
| D+ | >= 60 |
| D | >= 50 |
| D- | >= 40 |
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 25% of your grade, it will be worth 40% (everything else re-weighted accordingly). This means:
- Four programming assignments, worth 10 points each.
- Two exams, worth 8 points each.
- Final project, worth 40 points.
- Participation, worth 4 points.
Late Policy
The website is still under construction, and the late policy mentioned below is subject to change.
Each student has three (3) late days per assignment. DSP students with assignment extension accommodations have five (5) late per assignment.
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 late day. No late days can be applied to the last assignment, because at that point we want teams to focus on the final project. If you do not have remaining late days, late hand-ins will incur a 1 point penalty per day (out of 12.5 course points for 184, or out of 10 course points for 284A).
Late days are meant to be used for personal schedule conflicts, illness, submission issues and other unforeseen circumstances. For exceptional circumstances beyond this, please make a private Ed post or email cs184-sp26@berkeley.edu.
Participation Policy
Please read the participation policy article for more details.
As mentioned above, participation will count for 5 points towards your final grade. Every week, starting in week 2, you will be eligible for 2 participation credits. You will receive:
- 1 credit for attending one lecture and
- 1 credit for attending discussion
- 1 credit for going beyond with class content
You can earn 1 participation point per week by engaging with course content asynchronously (beyond class time). Examples include helping peers on Ed, discussing graphics outside class, attending graphics-related events, or applying class concepts in personal projects. A (soft) guideline for this option is that it should take around 30 minutes to an hour of involved work. Therefore, a one-sentence answer on Ed may not be enough unless the research behind this post took a significant amount of time. To receive credit, submit the participation Google Form, select “Asynchronous Participation,” and upload a screenshot showing your engagement.
You cannot receive more than 2 credits for a given week.
For example, you may attend both lectures for full credit. Another way to receive full credit would be to attend one lecture and one discussion. You could also go beyond with class content twice in the same week for full credit!
Each week, you will have from Monday 12:00am to Sunday 11:59pm to earn participation credit for the week.
Note that you must earn participation credits week-to-week and cannot “make-up” participation at the end of the semester.
Also note that we have a distinction between participation credits and course points! You can earn up to 2 participation credits each week (so the number of available credits will be num_weeks x 2). Your final participation grade will be scaled out of the total number of possible credits, and worth 5% of your final grade (these are the 5 possible course points you can earn for participation).
Your participation will be calculated from Week 2 (Starting January 26th) to the Sunday before RRR week.
Policy on Use of Generative-AI Tools
For programming assignments and the final project, you are welcome to use AI tools, including ChatGPT and Code Pilot, both for coding as well as writing your final projects. However, a few rules and things to keep in mind:
- Students are permitted to use AI tools for the assignments
- This is a practical position because there simply is no reliable way to police the use of AI.
- It is strongly encouraged that students write code themselves and then use AI to coach them through difficulties rather than just asking AI to do the work. You are here to learn and using AI to do everything for you destroys that learning opportunity. Think of it like this: When you go to the gym, you do the work, you don’t have a robot lift the weights or run on the treadmill. That would be pointless and a waste of your time and money.
- Note that code-specific tools are much better than general chat tools. For example, codex uses GPT as its core engine, but its specialized training, agenic setup, and IDE integration make it a much better tool for code than the web-based chat bot.
- The difference in quality of results can vary significantly between different AI tools. Experimentation with different tools is encouraged.
Inclusion
We are committed to creating a learning environment welcoming and supportive of all students. Towards this goal, we call on our class community to:
- Respect, welcome and learn from each other as individuals with unique backgrounds, perspectives and identities.
- Collaboration and team learning are encouraged, and will be supported through class staff and resources.
- Programming assignments and final project are a great way to meet new people and make friends; work on building trust and leveraging each other’s unique strengths.
- You are entitled to your own views, but your views do not give you the right to harass others.
- Everyone is here to learn and deliberately disrupting someone else’s learning experience is absolutely unacceptable and contrary to campus policies.
- If you feel that your learning is negatively affected by your experiences outside of class (e.g. family matters, current events), please don’t hesitate to come and talk with the instructor and/or staff. We want to support you.
Campus Resources:
Textbook
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:
Physically Based Rendering: From Theory to Implementation (Third Edition):
Authors: Matt Pharr, Wenzel Jakob, and Greg Humphreys
- Physically Based Rendering is the book for learning about modern ray tracing techniques. The book is freely available online, with full source code online for an advanced physically-based ray tracer. It even won an Oscar for its impact on the film industry!
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
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
Learning Cooperatively *
With the obvious exception of exams, we encourage you to discuss course activities with your friends and classmates as you are working on them. You will definitely learn more in this class if you work with others than if you do not. Ask questions, answer questions, and share ideas liberally.
Learning cooperatively is different from sharing answers. You shouldn’t be showing your code to other students or looking at others’ code, except:
- For assignments that allow partners, you can share anything with your partner.
- If you’ve finished a problem already, you can look at others’ code to help them finish.
If you are helping another student, don’t just tell them the answer; they will learn very little and run into trouble on exams. Instead, try to guide them toward discovering the solution on their own. Problem solving practice is the key to progress in computer science.
Since you’re working collaboratively, keep your project partner informed. If some medical or personal emergency takes you away from the course for an extended period, or if you decide to drop the course for any reason, please don’t just disappear silently! You should inform your project partner, so that nobody is depending on you to do something you can’t finish.
Online Forum
If you have any questions, please post them on the webpages for the relevant lecture slides or on Ed, the course discussion forum. Ed allows you to learn from questions your fellow students have asked. We encourage you to answer each others’ questions! Conceptual questions and comments should go on the lecture slide webpages, and logistics and assignment questions should go on Ed.
Ed is the best and most reliable way to contact the course staff. You are also welcome to email the course instructors at cs184-sp26@berkeley.edu.
Academic Honesty and Class Honor Code
The Honor Code is the commitment and work of students individually and as a community to uphold honesty and integrity. This commitment is comprehensive. Specifically on exams, it means not giving or receiving any help, or using any resources that are not permitted. The Honor Code requires that students take an active role in seeing to it that others as well as themselves uphold the letter and spirit of the Honor Code.
On exams you will sign to certify that:
- All the work submitted in my name for this exam is my work alone.
- I have not given or received any help during this exam.
- I have not used any un-permitted resources during this exam.
- I have used no more than the allowed time to write my answers for this exam.
- If I become aware of any Honor Code violations related to this exam, I will inform the course staff immediately.
Any students caught collaborating on exams will receive an F in the course. Please don’t be one of these students.
Assignment cooperation has a limit, and in CS184/284A that limit is reading others’ code or reports to a problem before you solve that problem and write up that portion of your own report. You are free to discuss the problems with others beforehand, but you must write your own code and reports. You may share code and report writing with your project partner.
As stated above, you are allowed to use AI tools. You are expected to use those tools to support your learning, not simply do the work for you. We have no way to check that, you are on your honor to do so.
If you are unsure if what you are doing is cheating, please clarify with the instructor by email or teaching staff via Ed. The following is a list of things you should NOT do. This list is not exhaustive, but covers most of the big offenses:
- Do not copy code or report writing from any student who is not your partner.
- Do not allow any student other than your partner to copy code or report writing from you.
- Do not copy code or writing from online sources such as Stack Overflow, Pastebin, and public repositories on GitHub.
- Do not post your code publicly during or after the semester.
In summary, we expect you to hand in your own work, take your own tests, and complete your own projects. The assignments and evaluations are structured to help you learn, which is why you are here.
Rather than copying someone else’s work, ask for help. You are not alone in this course! The entire staff is here to help you succeed. If you invest the time to learn the material and complete the projects, you won’t need to copy any answers.
A Parting Thought *
Grades and penalties aren’t the purpose of this course. We want to enable you to focus on your learning. The entire staff is very excited to be teaching CS184/284A this semester, and we’re looking forward to meeting such a large and enthusiastic group of students. We want all of you to be successful here. Welcome to our course!
* Thanks to Professor John DeNero and CS61A for the structure and much of the wording of various policies.