Course Details

Course Description

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.

Topics

The course will be split up into four larger topic areas:

  • Basic Geometry & Transformations:
    • Using matrices and vectors to represent and transform geometry
    • Triangle meshes, Splines
    • Transformation hierarchies and camera projection
  • Imaging:
    • Filtering & Convolution
    • HDR images & Tone Mapping
    • Basic image warping
  • Rendering: Ray tracing and appearance models
    • Ray tracing
    • Rasterization rendering pipeline
    • Appearance models and shading
  • Animation:
    • Keyframing & Interpolation
    • Principles of animation
    • Shaders & other real-time rendering topics

Interactive Web Demos

CS 5620/5621

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.

Graphics Practicum

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.

Artificial Intelligence Policy

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:

  • Students MAY NOT upload source code to any AI. This means agentic AIs are not allowed. So no claude code or similar tools.
  • Students MAY NOT use AI-generated code. As a rule of thumb, if you find yourself replicating more than just a few lines of code suggested by a chatbot, you are in dangerous territory.
  • Students may ask chatbots questions related to their work.

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.

Assignments

Programming Assignments

Most of the regular work in the course will be 5-6 coding assignments:

  • Assignments 0-2: Basic 2D Geometry
    • These assignments will be in TypeScript and AniGraph, which uses Three.js
  • Assignment 3: Imaging
    • In Python, mostly using Jupyter Notebooks
  • Assignment 4: Ray Tracing
    • In Python
  • Assignment 5 (maybe): We may add a fifth assignment on realtime graphics and shaders in preparation for the final project

Note that assignments represent a small-ish portion of the actual grade. We will, however, try to test knowledge gained from assignments in quizzes.

Late Policy & Slip Days

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.

Open-Ended Projects

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.

Creative Projects 1 & 2

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.

Final Project

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.

Submissions for Open-Ended Projects

Open-ended project submissions will include:

  • A representative image
  • A video presenting the project
  • A zip of your code
  • A report summarizing the features of your submission
  • Optional supplemental material that may help demonstrate or verify features you have implemented.

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

Assignment Docs: Link

Grading

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.

  • ~35% Quizzes, Problem sets, & Midterm
    • There will be occasional in-class quizzes:
    • Some will be short “pop” quizzes given without warning. Among these, we will drop your lowest score.
    • Some will be slightly more substantial quizzes that we warn you about ahead of time (at least 1 lecture before, but we will aim to do this sooner). We will not drop any of these, and if you are unable to attend lecture when they happen you should let us know as early as possible.
    • We will try to design in-class quizzes to minimize time-pressure, as we will not be able to offer extended time on in-class quizzes.
    • We will assign a problem set prior to the midterm exam with questions designed to be representative of the exam.
    • 1 Midterm, scheduled for 10/27/2026 in KMBB11 (link to prelim schedule for details)


  • ~15% Assignments
    • ~5 regular assignments (see summary in Assignments Section)
    • We may add one more assignment as an introduction/tutorial for the final project code base (TBD).


  • ~30% Creative Projects (see Assignments Section for details)
  • ~20% Final Project (see Assignments Section for details)


Split Grading:

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.

What do open-ended project grades look like?

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.

How are open-ended projects graded?

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.

Grading in the age of AI

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:

  • We reserve the right to request interviews with students regarding code they have submitted
  • Project grades may be impacted by performance on relevant material from quizzes. In other words, if quizzes yield evidence that you do not understand features you submitted in a project, that evidence may impact your project grade by causing you to receive less credit for said features. Note that this is not the same as an integrity violation, though academic integrity investigations are possible if, for example, we suspect AI or attribution rules were broken on a project.
  • Some quizzes may test material from assignments and projects that is not covered directly in lecture. For example, you will be expected to understand how basic features of AniGraph work.

Group Work:

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.

Tentative Schedule

Office Hours

TA’s will post office hours on the calendar below:

Textbook (Optional)

Academic Integrity

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!