The course will cover in detail the principles and algorithms used to generate high-quality, computer generated images for fields as diverse as scientific data visualization, modeling, computer aided design, human computer interaction, special effects, and video games. Topics covered include image formation, cameras and lenses, object models, object manipulation, transformations, illumination, appearance modeling, and advanced rendering via ray-tracing and path-tracing. Throughout the course, students will implement a working rendering engine in a suitable programming language.