Time: MWF, 1:25pm - 2:15pm EST
Location: Uris Hall G01
Instructors: Abe Davis and Kristina Monakhova
TAs and Office Hours: See Calendar
Ed Discussions (course link)
Time: MWF, 1:25pm - 2:15pm EST
Location: Uris Hall G01
Instructors: Abe Davis and Kristina Monakhova
TAs and Office Hours: See Calendar
Ed Discussions (course link)
Introduction to the principles of computer graphics in two and three dimensions. Topics include basic computations on geometry, shape representation, transformations and animation, basic digital image processing and filtering, ray tracing, perspective and 3-D viewing, the graphics pipeline, curves and surfaces, and the basics of human visual perception. This course emphasizes fundamental techniques in graphics, with written and practical assignments. Assignments will be a mix of traditional problems and open-ended creative tasks where students will be encouraged to apply material in creative ways. May be taken with or without concurrent enrollment in CS 4621.
The course will be split up into four larger topic areas:
Students taking the graduate version of the course will be required to complete some extra content on problem sets and potentially assignments. Details will be provided with each assignment.
Time: M, 12:20pm - 1:10pm EST
Location: Cornell University, Olin Hall 165
Practicum will focus on two open-ended projects over the course of the semester. Students will work in groups. Each project will have a proposal, and each group will be assigned a TA to meet with and provide updates.
Practicum will meet the first week of the semester, and occasionally later in the semester for check-ins and project demos. Most weeks will not have a formal lecture, but you will be expected to make regular progress and check in with your assigned TA at specified intervals.
There is an EdDiscussions page for practicum, with a channel for partner finding.
We have thought a lot about how to treat artificial intelligence (AI) in this course. There are reasonable arguments to be made for policies that range from complete restriction to none at all.
Our goal is to help you build a foundation of knowledge in computer graphics that will serve work in a wide range of downstream or adjacent disciplines.
When it comes to projects, a significant concern of ours at this time is that different students have wildly different levels of access and experience with AI. Especially when projects are graded with a process that explicitly ranks projects, it is important to ensure at least some level of equal footing.
With all of these concerns in mind, we settled on the following policy:
Especially obvious violations of these rules may lead to academic integrity cases.
You are responsible for the code you hand in, and we expect you to understand code that you have written. We will try to test that understanding. Some of the measures we plan to take are outlined in the grading section of the course info. For example, we reserve the right to ask for interviews about submitted code. Note that this is not hypothetical: it did happen last year, and we anticipate it will happen more this year.
Most of the regular work in the course will be 5-6 coding assignments:
Note that assignments represent a small-ish portion of the actual grade. We will, however, try to test knowledge gained from assignments in quizzes.
You can use up to 2 slip days (total) across the first 3 assignments (A0, A1, and A2). Then, you may use up to 2 slip days (total) on the next two assignments (A3 and A4).
Beyond this, late assignments will be penalized at 20% a day, capped at a 60% penalty if you turn it in more than 3 days late.
This class has a strong emphasis on open-ended projects, which are designed to test your ability to work creatively with material you learn in the class. Each of these projects will have some guidelines, and you will be restricted to building from provided libraries and functionality, but beyond that you will have a lot of freedom in how you meet the requirements.
There will be two “creative” projects, done in pairs. The first creative project will be in TypeScript using 2D features of AniGraph. You will be tasked with creating some type of 2D graphical demo or interactive application. The second creative project will be in Python extending a basic ray tracer you will build in Assignment 4.
There will be a final project in place of a final exam. Like the creative projects, this will be open-ended with some requirements and restrictions. You will work in AniGraph and TypeScript for this project. The final project will be more ambitious than the creative projects, and you will work in groups of up to 4. Expecataions for grading will scale with the size of your group.
Open-ended project submissions will include:
Each group member will also submit a contribution report. This will summarize the contributions of each member and let us know if there were any issues. We will also ask each student to briefly describe how the features they implemented work.
Assignment Docs: Link
A very approximate breakdown of grading is given below. This comes with a big disclaimer that percentages don’t exactly capture the grading for this course (more on that further below). Also, as we try to adopt to the new reality of AI, the approximation described here may change if we determine that something is especially gameable.
In practice, grade calculation is more complicated than a simple percentage breakdown. We try to use a split grading system, where grades up to around a B are uncurved, then grades above that are curved. To do this, we assign two grades for each of the three open-ended projects. One grade is an uncurved completion score, and the other is a “bonus” score. Bonus points are curved to decide final grades above B, after spending bonus points to make up for possible lower scores elsewhere in the course. The exchange rate for bonus points to credit on, say, an assignment, is pretty generous, so bonus points make it very possible to recover from a bad assignment (or, to a lesser but still significant extent, a poor exam). The main downside of this policy is that it can make it hard to predict exactly what your grade will be. If you want an estimate, most students will find it informative to think about what their grade would be under a traditional curve. In previous years, split grading has mostly differed from this traditional curve by helping some of the students on the lower end, usually as a reward for improved project scores later in the semester.
In terms of grading, each project will receive two scores: a completion score and bonus score. The completion score is based on how well you meet the basic requirements of the project, while the bonus score will reflect how much you went beyond those basic requirements. Completion points are not curved, but bonus points are at the end of the semester.
We have a rather sophisticated process, developed over several years, for grading open-ended projects to make the evaluation as fair and consistent as possible. You will not find a better system for evaluating this many open-ended projects. In fact, the system we developed evolved into a research project within my group that won Best Paper at CHI 2026. That being said, the system depends, in part, on students submitting clear and informative project reports and supporting material. You will not receive credit for features that are not demonstrated or explained with sufficient clarity. We will provide more details on what this means for each project.
It is a complicated time for evaluation, and a significant challenge for our grading will be to distinguish between students that develop real understanding of the material and students that use AI to circumvent learning. To this end:
A lot of work in this course will be done in groups. Students are expected to be good collaborators with group members. This means maintaining communication and dividing work reasonably.
For every group submission, there will be a separate form that each member must submit individually. This will ask about individual contributions and whether there were any problems with other group members. Individual grades may be adjusted based on these reports.
TA’s will post office hours on the calendar below:
Fundamentals of Computer Graphics (fourth edition) Available online in Cornell library.
We assume the work you hand in is your own, and the results you hand in are generated by your code. You are welcome to read whatever you want to learn what you need to do the work, but we do expect you to build your own implementations. For open-ended projects, please list any external resources you used as references in your report, indicating clearly and specifically where particular ideas or implementation strategies came from, whether it was a classmate, a website, another piece of software, or anything else—honesty will often keep penalties from being punitive (e.g., we may not give as much credit for a specific feature, but at least you won’t fail the project). If you use chatbots, we recommend including relevant chat logs.
The principle should be that every assignment is an academic document, like a journal article. When you turn it in, you are claiming that everything in it is your original idea (or is original to you and your partner, if you are handing in as a pair) unless a source is cited for it.
School can be stressful, and your coursework and other factors can put you under a lot of pressure, but that is never a reason for dishonesty. If you feel you can’t complete the work on your own, come talk to the professors or TAs, or your advisor, and we can help you figure out what to do. Think before you hand in!
Clear-cut cases of dishonesty will result in failing the course, and possibly an academic integrity referral.
For more information see Cornell’s Code of Academic Integrity.
NOTE: Also read the Section on our Artificial Intelligence Policy if you have not already, as that information is also very relevant to academic integrity!