This is a site for folks that want to learn graphics! Our goal is to put great lectures and great assignments in the hands of great students. The course material available here provides a comprehensive introduction to computer graphics, focusing 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.
Use our course material...
...and help us build more!
We're opening it up to help everyone learn—and teach—the next generation of computer scientists.
Help us make it even better by getting involved.
Each year, educators across the globe teach hundreds of courses in computer graphics. Though some get updated with the latest ideas and insights, others may remain stale for many years. Why not share the load? We aim to provide a collaborative space to share, develop, and distribute the latest and greatest course content.
Computer graphics is an extremely diverse field, encompassing tools from high performance computing, computational mathematics, art, design, and cognitive psychology—to name just a few. Yet several core principles appear over and over again. We strive to provide students with the most universal tools, enabling them to tackle the unknown challenges of tomorrow.
After graduation, many students experience a disconnect between abstract concepts they studied in the classroom and the challenges associated with building real-world systems. Rather than synthetic, compartmentalized assignments, we put an emphasis on holistic system design that integrates building blocks from geometry, rendering, and animation, and interfaces with real industry standards like SVG and COLLADA.
Real learning demands effective evaluation. We aim to accelerate the learning process by providing students real-time feedback about the correctness and efficiency of their code, as well as sophisticated visualization tools for debugging their implementation. These tools also aid learning among students who do not have access to a traditional learning environment.