Computer Graphics

Course ID 15462

Description This course provides a comprehensive introduction to computer graphics. It 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. Students will learn through lectures, exercises, and through hands-on programming experience as they build a 3D modeling, rasterization, path-tracing, and animation utility, Scotty3D, in C++.

Key Topics
- rasterization
- spatial transformations
- geometric representations
- the rendering equation
- path tracing
- animation
- splines
- meshes
- sampling
- numerical integration

Learning Resources
Lecture slides are posted for commenting and discussion. Piazza is also used for discussion. Additional readings are suggested per lecture (see course page).

Course Relevance
The techniques of Computer Graphics are essential to many aspects of modern life including visual effects in movies, layout design on web pages, visualization in scientific computing, CAD in industrial design, and real-time rendering for games. Graphics techniques are also the basis of emerging technologies, including developing and simulating autonomous vehicles, optimizing material structures, and robotic sensing systems.

Course Goals
Provide students with a strong basis in computer graphics techniques - broadly, spatial transformations, geometry, rendering, and animation - along with hands-on experience in the basics of these areas and knowledge of the state of the art.

Pre-required Knowledge
Basic vector calculus and linear algebra will be an important component of this course. Previous exposure to basic programming in C/C++ or similar languages is very helpful as course programming assignments will involve significant implementation effort.

Assessment Structure
Students will be assessed through programming assignments (~70%), midterm/final exams (~20%), and course participation (~10%).

Extra Time Commitments
This course 15-462 is for undergraduates. Graduate students should enroll in 15-662.