Courses (current)

15-458 / Discrete Differential Geometry

Spring 2022 Keenan Crane
Spring 2021 Keenan Crane
Spring 2020 Keenan Crane
Spring 2019 Keenan Crane
Fall 2017 Keenan Crane
Spring 2016 Keenan Crane
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.

15-462 / Computer Graphics

Spring 2023 Nancy Pollard
Fall 2022 Jim McCann
Spring 2022 Nancy Pollard
Fall 2021 Keenan Crane
Spring 2021 Nancy Pollard
Fall 2020 Keenan Crane
Spring 2020 Keenan Crane
Fall 2019 Matthew O'Toole, Jim McCann
Spring 2019 Nancy Pollard
Fall 2018 Keenan Crane
Spring 2018 Nancy Pollard
Fall 2017 Keenan Crane
Fall 2016 Keenan Crane, Stelian Coros
Fall 2015 Kayvon Fatahalian, Keenan Crane
Spring 2015 Nancy Pollard
Fall 2014 Srinivasa Narasimhan
Spring 2014 Nancy Pollard
Fall 2013 Srinivasa Narasimhan
Spring 2013 Nancy Pollard
Fall 2012 Srinivasa Narasimhan
Spring 2012 Nancy Pollard
Fall 2011 Srinivasa Narasimhan
Spring 2011 Nancy Pollard
Fall 2010 Srinivasa Narasimhan
Spring 2010 Adrien Treuille
Fall 2009 Srinivasa Narasimhan
Spring 2009 Adrien Treuille
Fall 2008 Nancy Pollard
Spring 2008 Nancy Pollard
Fall 2007 Nancy Pollard
Spring 2007 Jessica Hodgins
Fall 2006 James Kuffner
Spring 2006 Doug James
Fall 2005 Nancy Pollard
Spring 2005 Yanxi Liu
Fall 2004 Nancy Pollard
Spring 2004 Nancy Pollard
Fall 2003 Doug James
Spring 2003 Frank Pfenning
Fall 2002 Jessica Hodgins
This course provides a comprehensive introduction to computer graphics. Focuses on fundamental concepts and techniques, and their cross-cutting relationship to multiple problem domains in graphics (rendering, animation, geometry, imaging). Topics include: sampling, aliasing, interpolation, rasterization, geometric transformations, parameterization, visibility, compositing, filtering, convolution, curves & surfaces, geometric data structures, subdivision, meshing, spatial hierarchies, ray tracing, radiometry, reflectance, light fields, geometric optics, Monte Carlo rendering, importance sampling, camera models, high-performance ray tracing, differential equations, time integration, numerical differentiation, physically-based animation, optimization, numerical linear algebra, inverse kinematics, Fourier methods, data fitting, example-based synthesis.

15-463 / Computational Photography

Fall 2023 Ioannis Gkioulekas
Fall 2022 Ioannis Gkioulekas
Fall 2021 Ioannis Gkioulekas
Fall 2020 Ioannis Gkioulekas
Fall 2019 Ioannis Gkioulekas
Fall 2018 Ioannis Gkioulekas
Fall 2017 Ioannis Gkioulekas
Fall 2015 Kris Kitani
Fall 2014 Kris Kitani
Fall 2013 Kris Kitani
Fall 2012 Alexei Efros
Fall 2011 Alexei Efros
Fall 2010 Alexei Efros
Spring 2010 Alexei Efros
Fall 2008 Alexei Efros
Fall 2007 Alexei Efros
Fall 2006 Alexei Efros
Fall 2005 Alexei Efros
Fall 2004 Alexei Efros
Computational photography is the convergence of computer graphics, computer vision, optics, and imaging. Its role is to overcome the limitations of traditional cameras, by combining imaging and computation to enable new and enhanced ways of capturing, representing, and interacting with the physical world. This course provides an overview of the state of the art in computational photography. At the start of the course, we will study modern image processing pipelines, including those encountered on mobile phone and DSLR cameras, and advanced image and video editing algorithms. Then we will continue to learn about the physical and computational aspects of tasks such as 3D scanning, coded photography, lightfield imaging, time-of-flight imaging, VR/AR displays, and computational light transport. Near the end of the course, we will discuss active research topics, such as creating cameras that capture video at the speed of light, cameras that look around walls, or cameras that can see below skin.

15-464 / Technical Animation

Spring 2021 Nancy Pollard
Spring 2020 Nancy Pollard
Spring 2019 Nancy Pollard
Spring 2017 Nancy Pollard
Spring 2015 Nancy Pollard
Spring 2013 Nancy Pollard
Spring 2011 Nancy Pollard
Fall 2009 Nancy Pollard
Spring 2007 Nancy Pollard
Fall 2005 Nancy Pollard
This course introduces techniques for computer animation such as keyframing, procedural methods, motion capture, and simulation. We will focus primarily on character animation, but will also discuss animation of cloth and natural phenomena. Recent research results will be considered as well as basic techniques. The course also includes a brief overview of story-boarding, scene composition, and lighting.

15-465 / Animation Art and Technology

Spring 2016 James Duesing and Jessica Hodgins
Spring 2014 James Duesing and Jessica Hodgins
Spring 2013 James Duesing and Jessica Hodgins
Spring 2012 James Duesing and Jessica Hodgins
Spring 2010 James Duesing and Jessica Hodgins
Spring 2009 James Duesing and Jessica Hodgins
Spring 2008 James Duesing and Jessica Hodgins
Spring 2007 James Duesing and Jessica Hodgins
Spring 2003 James Duesing and Jessica Hodgins
Fall 2003 James Duesing and Jessica Hodgins
Spring 2005 James Duesing and Jessica Hodgins
Spring 2006 James Duesing and Jessica Hodgins
Students in this course will learn to use computer-based tools such as Maya to create artistic animation. The final project will begin as a storyboard, morph into an animatic and gradually become a complete animation with fully rendered frames and audio.

15-466 / Computer Game Programming

Fall 2023 Jim McCann
Fall 2022 Jim McCann
Fall 2021 Jim McCann
Fall 2020 Jim McCann
Fall 2019 Jim McCann
Fall 2018 Jim McCann
Fall 2017 Jim McCann
Fall 2012 Maxim Likhachev
Fall 2009 Jim McCann
Spring 2008 James Kuffner
Spring 2007 James Kuffner
Spring 2005 Jessica Hodgins and Josh Yelon
Spring 2004 James Kuffner
Fall 2002 James Kuffner
This course will cover tools and techniques for programming interactive games and virtual reality simulations. The course will focus primarily on programming aspects, including event loops and execution threads, rendering and animation in 3D, terrain/background representation, polygonal models, texturing, collision detection and physically-based modeling, game AI, and multi-user games and networking. Although this course has a heavy programming focus, other topics briefly covered will include the history of computer/video game technology, game genres and design principles, and the social impact of games.

15-468 / Physics-based Rendering

Spring 2024 Ioannis Gkioulekas
Spring 2023 Ioannis Gkioulekas
Spring 2022 Ioannis Gkioulekas
Spring 2021 Ioannis Gkioulekas
This course is an introduction to physics-based rendering at the advanced undergraduate and introductory graduate level. During the course, we will cover fundamentals of light transport, including topics such as the rendering and radiative transfer equations, light transport operators, path integral formulations, and approximations such as diffusion and single scattering. Additionally, we will discuss state-of-the-art models for illumination, surface and volumetric scattering, and sensors. Finally, we will use these theoretical foundations to develop Monte Carlo algorithms and sampling techniques for efficiently simulating physically-accurate images. Towards the end of the course, we will look at advanced topics such as rendering wave optics, neural rendering, and differentiable rendering.

15-472 / Real-Time Computer Graphics

Spring 2024 Jim McCann
Real-Time Computer Graphics is about building systems that leverage modern CPUs and GPUs to produce detailed, interactive, immersive, and high-frame-rate imagery. Students will build a state-of-the-art renderer using C++ and the Vulkan API, and use it to explore interesting topics. This will include building support for a physically-based material system; physics-driven animation; skinned character animation; post-processing effects; real-time lighting and shadowing; LOD, culling, and streaming; and more. In essence, Real-Time Computer Graphics is about doing everything you learned in Computer Graphics, but bigger, faster, and at frame-rates.

15-769 / Physics-based Animation of Solids and Fluids

Spring 2025 Minchen Li
Fall 2023 Minchen Li
This course delves into the heart of physically-based animations of solids and fluids, a key component in fields ranging from visual effects and VR to digital fashion. Central to this is solving partial differential equations (PDEs) using numerical methods, with applications extending to computational mechanics, robotic training, and 3D content creation. Combining lectures with student presentations, we will explore the simulation of various physical entities, such as rigid bodies, deformable bodies, shells, rods, liquids, and smoke, all the way from the discretization of the governing PDEs to the efficient implementation and evaluation of the numerical solvers. Students will acquire a thorough understanding of both classic and state-of-the-art methods of solids and fluids simulation in computer graphics. They will also gain insights into the existing challenges in enhancing and applying these methods within the broader field.

15-867 / (was: 15-869K) Algorithmic Textiles Design

Spring 2023 Jim McCann
Spring 2021 Jim McCann
Spring 2020 Jim McCann
Spring 2019 Jim McCann
Textile artifacts are -- quite literally -- all around us; from clothing to carpets to car seats. These items are often produced by sophisticated, computer-controlled fabrication machinery. In this course we will discuss everywhere code touches textiles fabrication, including design tools, simulators, and machine control languages. Students will work on a series of multi-week, open-ended projects, where they use code to create patterns for modern sewing/embroidery, weaving, and knitting machines; and then fabricate these patterns in the textiles lab. Students in the 800-level version of the course will additionally be required to create a final project that develops a new algorithm, device, or technique in textiles fabrication.

16-726 / Learning-Based Image Synthesis

Spring 2022 Jun-Yan Zhu
Spring 2021 Jun-Yan Zhu
This course introduces machine learning methods for image and video synthesis. The objectives of synthesis research vary from modeling statistical distributions of visual data, through realistic picture-perfect recreations of the world in graphics, and all the way to providing interactive tools for artistic expression. Key machine learning algorithms will be presented, ranging from classical learning methods (e.g., nearest neighbor, PCA, Markov Random Fields) to deep learning models (e.g., ConvNets, deep generative models, such as GANs and VAEs). We will also introduce image and video forensics methods for detecting synthetic content. In this class, students will learn to build practical applications and create new visual effects using their own photos and videos.

16-823 / Physics-based methods in Computer Vision

Spring 2020 Matthew O'Toole
Spring 2019 Matthew O'Toole
Spring 2011 Srinivasa Narasimhan
Fall 2008 Srinivasa Narasimhan
Fall 2007 Srinivasa Narasimhan
Fall 2006 Srinivasa Narasimhan
Fall 2005 Srinivasa Narasimhan
Everyday we observe an extraordinary array of light and color phenomena around us, ranging from the dazzling effects of the atmosphere, the complex appearances of surfaces and materials and underwater scenarios. For a long time, artists, scientists and photographers have been fascinated by these effects, and have focused their attention on capturing and understanding these phenomena. In this course, we take a computational approach to modeling and analyzing these phenomena, which we collectively call as "visual appearance". The first half of the course focuses on the physical fundamentals of visual appearance, while the second half of the course focuses on algorithms and applications in a variety of fields such as computer vision, graphics and remote sensing and technologies such as underwater and aerial imaging. This course is an initial attempt to unify concepts usually learnt in physical sciences and their application in imaging sciences. The course will also include a photography competition in addition to analytical and practical assignments.

16-848 / Hands: Design and Control for Dexterous Manipulation

Spring 2022 Nancy Pollard
Spring 2020 Nancy Pollard
Spring 2018 Nancy Pollard
Spring 2016 Nancy Pollard
Spring 2010 Nancy Pollard
In this course, we will survey robotic hands and learn about the human hand with the goal of understanding hand design and control for dexterity. Questions to be explored include the following. Should robot hand kinematics be humanlike? What robotic sensors are available / practical, how do they measure up to sensors in the human hand, and what sensing capabilities are required for dexterous manipulation? What is a good benchmark suite of tasks for evaluating dexterous behavior? How do we design control algorithms for dexterous manipulation in the presence of uncertainty? What can we learn from human manipulation performance to improve robotic manipulation capability? This is a reading and project course. Students will be asked to present one or two short research papers of their own and to design and carry out a final project.

Courses (archive)

15-236 / Special Topics: Saving Humanity With Computational Models

Spring 2021 Jim McCann
We live in a complex society and on a complex planet; but we tend to think about the world through simplified models and assumptions. How do we know if our simplified mental models make sense? Computational modeling is an approach to understanding our understanding of the world wherein we write down our mental models as computer code, mix in a bit of real data, and run it to see what we can learn. Models can help us to understand ourselves, the world around us, and how to shape the future. This course is about building interactive, web-based graphical experiences which use computational models to inform and influence public discourse and policymaking.

15-467 / Physical Simulation for Computer Animation

Fall 2007 Adam Bargteil
Physically based simulation techniques have revolutionized special effects in film and video games, creating extremely realistic effects while allowing unprecedented artistic control and avoiding dangerous situations. This course will explore physically based simulation methods for computer animation of a wide variety of phenomena and materials including rigid and deformable solids, cloth, liquids, and explosions. Students will be introduced to numerical methods, physical models, data structures, and theoretical results which form the building blocks of these methods. To gain hands-on experience, students will implement basic simulators for several phenomena.

15-863 / Physically Based Modeling and Interactive Simulation

Spring 2003 Doug James
Spring 2005 Doug James
This course introduces students to physically based modeling for computer graphics and related fields, and summarizes current research issues. Efficient numerical methods for simulating a host of visually interesting physical phenomena will be covered, and discussed in the context of both interactive and offline simulation. The course should be appropriate for graduate students in all areas and for advanced undergraduates.

15-864 / Advanced Computer Graphics

Spring 2004 Doug James
Spring 2005 Doug James
Spring 2006 Doug James
This course will be a hands-on class on advanced computer graphics. It will cover major aspects of digital image generation: geometric modeling, computer animation, and rendering. The goal of the course is to provide a strong foundation for computer graphics principles, and provide a hands-on introduction to recent advanced topics, e.g., subdivision surfaces, real-time global illumination, and physically based animation. The course should be appropriate for graduate students in all areas and for advanced undergraduates.

15-869 / Computer Graphics Seminar

Fall 2015 Sheikh, Coros, Crane, Fatahalian, Kara, Hodgins, Narasimhan, Pollard
This seminar course introduces the frontiers of computer graphics research. The goal is to encourage the ability to think critically and constructively about active research topics.

15-869 / Data-driven Character Animation

Fall 2003 Jessica Hodgins
This course is an in-depth study of recently developed techniques for using data to produce character animations. We will explore systems that have been developed for both interactive and off-line animations using motion capture data, video data, and body scans. The topics to be covered include: motion editing, retargeting, motion graphs, statistical motion synthesis, interfaces, skinning and modeling of deformable shapes for human animation.

15-869 / Human Motion Modeling and Analysis

Fall 2012 Yaser Sheikh, Leonid Sigal
Human motion analysis is used in applications as varied as special effects in movies, animation, sport training, physical rehabilitation for the disabled, and human-robot/human-computer interaction. This course will survey state-of-the-art techniques, in the industry and academia, to capture, model, and analyze human motion. The course will be a mix between lectures and seminar-style paper reading of recent research into human motion modeling and analysis. The course evaluation will be project-based, in which students will capture their own body and face motion, and build projects around the data they collect individually and as a group.

15-869 / Special Topics in Graphics: Graphics and Imaging Architectures

Fall 2011 Kayvon Fatahalian
Visual computing tasks such as 3D graphics and image processing are increasingly important to the capabilities and overall user experience delivered by computer systems ranging from high-end workstations to sensor-rich smart phones. The aim of this reading and project-based course is to examine key ideas, trends, and challenges associated with the design of architectures and systems responsible for efficiently executing these workloads. This course begins with an in-depth study of the real-time graphics pipeline architecture and the efficiency of its modern GPU implementations. Key topics include the design of GPU processing and communication resources, graphics pipeline components and their scheduling on heterogeneous, parallel hardware, and how current abstractions balance conflicting needs for both efficiency and programmability. The second part of the course will address system design challenges in a broader array of emerging visual computing topics including: image processing architectures for mobile computing, programmable camera platforms, alternative graphics pipelines, and GPU-accelerated interfaces for application domains beyond graphics.

15-869 / The Animation of Natural Phenomena

Fall 2008 Adrien Treuille
Fall 2011 Adrien Treuille
Fall 2010 Adrien Treuille
This class covers physical simulation in computer graphics. The goal is to teach a broad swath of techniques—from particle systems to human animation—while learning some math, working on fun projects, and practicing quick problem solving and public presentation skills.

15-869A / Generating Natural Human Motion

Spring 2008 Jessica Hodgins
Spring 2006 Jessica Hodgins
This course is an in-depth study of recently developed techniques for creating natural human motion for robotics and computer animation. We will explore both the mathematical techniques behind these systems and techniques for evaluating them. The topics to be covered include: control, motion graphs, statistical motion synthesis, motion blending, and optimization.

15-869B / Physically Based Character Animation

Fall 2004 Nancy Pollard
Fall 2006 Nancy Pollard
Spring 2009 Nancy Pollard
Spring 2012 Nancy Pollard
This course will explore topics in physically based character animation, where the goal is to obtain a character performance that appears both natural and physically plausible. We will focus on optimization approaches to generating realistic motion for humanlike characters and cover research results in computer graphics and biomechanics. The course should be appropriate for graduate students with some computer graphics and / or robotics experience and for advanced undergraduates.

15-899A / Pixels to Percepts: Visual Perception for Computer Vision and Graphics

Spring 2011 Alexei Efros
Why do things look the way they do? Why is understanding the visual world, while so effortless for humans, so excruciatingly difficult for computers? What insights from the human visual system can we use in computer vision? What quirks of visual perception can we exploit in computer graphics? In this seminar course, through lectures, paper presentations, and projects, we will explore a number of familiar yet mysterious perceptual phenomena that involve color, illumination and shadows, material and object appearance, scenes, movement etc., both in terms of understanding (computer vision) as well as modeling (computer graphics). Basic techniques for designing psychophysical experiments will also be presented.

16-421 / Vision Sensors

Spring 2009 Srinivasa Narasimhan
Spring 2008 Srinivasa Narasimhan
This course covers the fundamentals of vision cameras and other sensors - how they function, how they are built, and how to use them effectively. The course presents a journey through the fascinating five hundered year history of "camera-making" from the early 1500's "camera obscura" through the advent of film and lenses, to today's mirror-based and solid state devices (CCD, CMOS). The course includes a significant hands-on component where students learn how to use the sensors and understand, model and deal with the uncertainty (noise) in their measurements. While the first half of the course deals with conventional "single viewpoint" or "perspective" cameras, the second half of the course covers much more recent "multi-viewpoint" or "multi-perspective" cameras that includes a host of lenses and mirrors.

16-721 / Advanced Perception

Spring 2006 Alexei Efros
Advanced Perception is a graduate seminar devoted to recent research on computer vision. We will be reading an eclectic mix of vision papers on topics such as perception, object and scene recognition, segmentation, tracking, as well as "best papers of all time."

16-721 / Learning-based methods in Computer Vision

Spring 2012 Alexei Efros
Spring 2009 Alexei Efros
The goal of this graduate seminar course is to gain a deeper understanding of the computer vision problem in order to better reason about ways data and learning could be used to tackle it. The central focus will be on representation of visual data, rather than on fancy learning techniques. We will be looking at all stages of visual processing, from low-level (color, texture, local patches) all the way to high-level (object recognition, general image understanding). We will pay particular attention to mid-level vision (grouping, segmentation, figure/ground, scene layout, image parsing) -- a crucial glue tying vision together that has been largely neglected. The course will have an emphasis on using large amounts of real data (images, video, textual annotations, other meta-data). We will also discuss the difficult issue of what is the right choice of training data and how can it be acquired.

Other Relevant Courses

  • ROB 16-385 / Computer Vision
  • ROB 16-720 / Computer Vision
  • CFA 51-741 / Introduction to Computing in Design
  • ARC 48-120/48-260/48-760 / Computer Modeling
  • ARC 48-745 / Geometric Modeling: Theory, Programming and Practice
  • ARC 48-760 / Digital Narratives
  • ART 60-110 / Electronic Media Studio I: Computer Art
  • ART 60-210 / Electronic Media Studio II: Video
  • ART 60-410 / Advanced ETB: Concepts of Animation
  • ART 60-415 / Advanced ETB: 3-D Animation
  • ART 60-423 / Advanced ETB: Telepresence Art & Applications
  • ART 60-424 / Advanced ETB: Special Topic: Interactive Programming
  • CFA 51-741 / Introduction to Computing in Design
  • ECE 18-396 / Signals and Systems
  • ECE 18-551 / Digital Communications and Signal Processing Systems Design
  • ECE 18-751 / Applied Stochastic Processes
  • ECE 18-791 / Digital Signal Processing I
  • ECE 18-792 / Digital Signal Processing II
  • ECE 18-796 / Multimedia Communications: Coding, Systems, and Networking
  • ECE 18-798 / Image and Video Processing
  • ETC 53-831 / Building Virtual Worlds
  • ETC 53-871 / Dramatic Structures of Interactive Games
  • MEG 24-201 / Engineering Graphics
  • MEG 24-351 / Dynamics