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.

Tentative Schedule

Grading

An approximate breakdown of grading is given below:

  • ~35% Quizzes, Problem sets, & Midterm
    • Quizzes will be completed and submitted online. They will generally be smaller than problem sets.
    • There will be 1-3 problem sets. The exact number of quizzes vs problem sets will depend on TA capacity (i.e., fewer PSets will mean more quizzes)
    • 1 Midterm, scheduled for October 29 (link to prelim schedule for details)


  • ~45% Assignments
    • 5-6 regular assignments (see summary in Assignments Section)
      • Some of these may be broken up into smaller progressive submissions (e.g., A1, A1b).
      • We may add one more assignment as an introduction/tutorial for the final project code base (TBD).
    • There will be 2 “creative” projects
      • Open-ended with a list of requirements
      • Work in pairs
      • Meeting the basic requirements corresponds approximately to a B/B+, while exceeding them by a lot can effectively earn extra credit (details about how this works in class)


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


Exact percentages may vary somewhat from what is listed above. In particular, the grading is designed so that exceptional creative projects and/or final projects can make up for mistakes elsewhere.

Assignments

Main Assignments

There will be 5-6 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 - Assignment 5 (maybe): We may add a fifth assignment on realtime graphics and shaders, and/or keyframed animation

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

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

Assignment 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.