Course Description

Instructor: Keenan Crane (

Nicole Feng (
Office hours: Fridays, 5:30 – 6:30pm (Zoom link)

Ethan Lu (
Office hours: Wednesdays, 3 – 4pm (Zoom link)

Prerequisites: linear algebra, vector calculus, some programming experience. At CMU, this means: (15-110 or 15-112 or 15-122 or 02-201), and ((21-240 or 21-241 or 21-242 or 21-341), and (21-256 or 21-259 or 21-268 or 21-269)) or 21-254.  If you do not satisfy the official prereqs you may still be eligible for the course—please contact the instructor.

This course focuses on three-dimensional geometry processing, while simultaneously providing a first course in traditional differential geometry. Our main goal is to show how fundamental geometric concepts (like curvature) can be understood from complementary computational and mathematical points of view. This dual perspective enriches understanding on both sides, and leads to the development of practical algorithms for working with real-world geometric data. Along the way we will revisit important ideas from calculus and linear algebra, putting a strong emphasis on intuitive, visual understanding that complements the more traditional formal, algebraic treatment. The course provides essential mathematical background as well as a large array of real-world examples and applications. It also provides a short survey of recent developments in digital geometry processing and discrete differential geometry. Topics include: curves and surfaces, curvature, connections and parallel transport, exterior algebra, exterior calculus, Stokes’ theorem, simplicial homology, de Rham cohomology, Helmholtz-Hodge decomposition, conformal mapping, finite element methods, and numerical linear algebra. Applications include: approximation of curvature, curve and surface smoothing, surface parameterization, vector field design, and computation of geodesic distance.

Course material has been used for semester-long courses at CMU (2016, 2017, 2019,2020), Caltech (2011,2012), Harvey Mudd (2020), 2012, 2013, 2014, 2016, 2017), Columbia University (2013), and RWTH Aachen University (2014, 2015, 2016, 2017), as well as special sessions at SIGGRAPH (2013) and SGP (2012, 2013, 2014, 2017).

Remote instruction: For Spring 2021, 15-458/858 will be taught remotely.  Lecture videos will be pre-recorded and uploaded to this YouTube playlist. During each lecture period, you are free to watch the video at your own pace. The instructor (and possibly TAs) will be available to answer questions via Zoom (see Piazza for Zoom links). Just pause, switch to Zoom, and ask. If for some reason you are unable to watch the videos during the scheduled lecture period, you are free to ask questions (i) here on the course webpage, (ii) via Piazza, (iii) via Discord, and/or (iv) during office hours.

Getting connected: There are lots of ways to get connected to your classmates this semester. In particular:

  • You can leave comments on any post on the course webpage.
  • We have a class Piazza where you can discuss and ask questions in a forum-type format.
  • We also have a class Discord where you can discuss and ask questions in a live chat format.
  • For private issues, you may contact the TAs/instructors via email (see addresses above). However, you will find that you probably have a much faster response rate via Piazza, which allows private posts.

Some tips for making the most out of videos:

  • If you find yourself losing focus, you may actually find it’s helpful to accelerate the videos, and watch them at 1.25x or 1.5x speed.  This can be done on YouTube via a menu in the lower-right corner of the video.
  • Some people have trouble staying focused on a video for a complete 80-minute lecture. If that’s true for you, try splitting it up into two (or more) watching sessions. E.g., one 40-minute viewing during the lecture period, and another the next day. The video sections can help you to find a logical break.

Some notes on the Zoom Q&A sessions:

  • Feel free to ask questions either via voice or in the chat. If you ask by voice, I will respond by voice; if you ask via chat, I will respond via chat!
  • You are welcome to come and go as you please, but if you’d like to keep a persistent Zoom running while you watch the lecture video, note that you can disable the Zoom audio temporarily by selecting the “Leave Computer Audio” option from the menu attached to the Mute/Unmute button.
  • Please make sure to mute yourself while you’re not asking questions—and please don’t be offended if we mute you!  We are simply trying to reduce background noise for the rest of the class.
  • Finally, people often ask questions that go beyond the scope of the course—purely out of curiosity. Please don’t worry if you don’t understand everything that’s being discussed. I’m glad to answer these questions, but often the answer may require concepts and jargon that you are not expected to know for the class itself. Of course if you do want to know more, just ask! There are no “dumb” questions.