Course Details

Time: MWF, 1:30pm - 2:20pm EST
Location: Cornell University, Hollister Hall B14
Instructor: Abe Davis (Email: abedavis [at] cornell [dot] edu) Gates R307
TAs and Office Hours: See Calendar
Ed Discussions (course link)

Course Description

Introduction to the principles of computer graphics in two and three dimensions. Topics include basic computational geometry and 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 human visual perception. This course emphasizes fundamental techniques in graphics, with written and practical assignments. Assignments will have core parts as well as open-ended creative parts 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:

  • 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


Time: M, 12:25pm - 1:15pm EST
Location: Cornell University, Phillips Hall 219

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 check in with your assigned TA at specified intervals.

CS 5620/5621

Students taking the graduate version of the course will be required to complete some extra content on problem sets and assignments. Details will be provided with the assignments.

Tentative Schedule


An approximate breakdown of grading is given below:

  • ~40% Quizes, Problem sets, & Midterm
    • 15-20% of this will be in-class mini quizess.
      • There will be 1-2 of these a week
      • I will drop the lowest 20%
    • 2 Problem Sets, which will be take-home
    • 1 Midterm, scheduled for October 20 (link to prelim schedule)

  • ~40% Assignments
    • Approximately 4 regular assignments (see summary in Assignments Section)
      • Some of these may be broken up into smaller progressive submissions.
    • There will be 2-3 “creative” assignments
      • Open ended with a list of requirements
      • Work in groups
      • Submissions that exceed the requirements can get a kind of extra credit (details in class)

  • ~20% Final Project
    • Open Ended
    • Work in groups

*Exact percentages may vary slightly from what is listed above*


Main Assignments

There will be 4-5 main 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

*There may also be a small animation mini-assignment at some point in the semester, depending on how other new aspects of the course go*

Creative Assignments

Creative assignments are open-ended group assignments with some basic requirements. I will provide an example of what would be considered a roughly B+ quality submission.

There will be two creative assignments. The first will be in TypeScript using AniGraph and/or Three.js, and the second will be in Python extending the ray tracer you build in Assignment 4.

Final Project

There will be a final project in place of a final exam. This project will count for a substantial part of your final grade. Like the creative assignments, it will be an open-ended group project with a list of basic requirements.

Office Hours

AniGraph Docs

Assignment Docs: Link

Textbook (Optional)

Academic Integrity

Basics: Academic integrity: We assume the work you hand in is your own, and the results you hand in are generated by your program. 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. If you are ever in doubt, just include a citation in your code or report indicating clearly and specifically where some particular idea or implementation came from, whether it be a classmate, a web site, another piece of software, or anything—this always maintains your honesty, whether the source was used in a good way or not.

The principle is that an 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 you cite a source 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 professor or the 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.

For more information see Cornell’s Code of Academic Integrity.