Visual Computing Systems

Course ID 15473

Description Visual computing tasks such as computational imaging, image/video understanding, and real-time graphics are key responsibilities of modern computer systems ranging from sensor-rich smart phones to large datacenters. These workloads demand exceptional system efficiency and this course examines the key ideas, techniques, and challenges associated with the design of parallel, heterogeneous systems that accelerate visual computing applications. This course is intended for graduate and advanced undergraduate-level students interested in architecting efficient graphics, image processing, and computer vision platforms.

Key Topics
Graphics pipeline, high-performance rasterization, texturing fetching, shading language design, parallelization, scheduling, image processing pipeline, compression

Learning Resources
None

Course Relevance
This course 15-469 is for undergraduates. Masters students should enroll in 15-669. PhD students should enroll in 15-869.
Computer graphics was responsible for many key advancements in computer architecture, one of the most notable being the fixed-function GPU. As our graphics algorithms strive to push more pixels onscreen to create higher-resolution data, it is important that we have the computer architecture to help support these massively parallel programs. This course aims to teach students the underlying architecture they are working with when running graphics applications and will help students better understand how to write faster, advanced modern-day graphics and vision code.

Course Goals
The course is divided into two phases. We begin with an in-depth study of the real-time 3D graphics pipeline and its modern GPU implementations. Some specifics include GPU processing and communication resources, graphics pipeline algorithms, and scheduling of these algorithms on heterogeneous, parallel hardware that balances conflicting needs of efficiency and programmability. We then transition into a study of the image processing pipeline in computational cameras. This section of the course includes key algorithms, workload scheduling decisions, hardware acceleration, and the potential of new programming frameworks. Students enrolled in the course can expect to learn many of the acceleration techniques and hardware associated with computer graphics and vision.

Pre-required Knowledge
Computer programming and systems knowledge at the level of 15-213 is required. Computer architecture knowledge equivalent to 15-418 or Computer graphics/vision knowledge equivalent to 15-462 strongly preferred. Students with a strong architecture and/or graphics background who have not met the course pre-requisites may contact the instructor for permission to enroll.

Assessment Structure
Assignments (45%), Final Project (45%), Class Participation (5%)