16.01.2015 Views

CS2013-final-report

CS2013-final-report

CS2013-final-report

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

cumulate in a multi-week <strong>final</strong> project. Topics covered in the course include: projective geometry, ray tracing,<br />

bidirectional surface scattering functions, binary space partition trees, matting and compositing, shadow maps,<br />

cache management, and parallel processing on GPUs. The cumulative laboratory exercises bring students through<br />

the entire software research and development pipeline: domain-expert feature set, formal specification,<br />

mathematical and computational solutions, team software implementation, testing, documentation, and<br />

presentation.<br />

How are students assessed<br />

In 13 weeks, students complete 9 programming projects, two of which are multi-week team projects.<br />

Course textbooks and materials<br />

Students use the iOS app The Graphics Codex as their primary textbook and individually choose one of the<br />

following for assigned supplemental readings, based on their interest: Fundamentals of Computer Graphics, 3rd<br />

Edition, A K Peters; Computer Graphics: Principles and Practice, 3rd Edition, Addison Wesley; or Real-Time<br />

Rendering, 3rd Edition, A K Peters.<br />

Why do you teach the course this way<br />

In this course, students work from first principles of physics and mathematics, and a body of knowledge from art.<br />

That is, I seek to lead with science and then support it with engineering. Many other CS courses--such as<br />

networking, data structures, architecture, compilers, and operating systems--develop the ability to solve problems<br />

that arise within computer science and computers themselves. In contrast, graphics is about working with problems<br />

that arise in other disciplines, specifically physics and art. The challenge here is not just solving a computer<br />

science problem but also framing the problem in computer science terms in the first place. This is a critical step of<br />

the computational and scientific approach to thinking, and the field of graphics presents a natural opportunity to<br />

revisit it in depth for upper-level students. Graphics in this case is a motivator, but the skills are intentionally<br />

presented as ones that can be applied to other disciplines, for example, biology, medicine, geoscience, nuclear<br />

engineering, and finance. The rise of GPU computing in HPC is a great example of numerical methods and<br />

engineering originating in computer graphics being generalized in just this way.<br />

Body of Knowledge coverage<br />

KA Knowledge Unit Topics Covered Hours<br />

GV<br />

Fundamental<br />

Concepts<br />

Basics of Human visual perception (HCI Foundations).<br />

Image representations, vector vs. raster, color models, meshes.<br />

Forward and backward rendering (i.e., ray-casting and rasterization).<br />

Applications of computer graphics: including game engines, cad,<br />

visualization, virtual reality.<br />

Polygonal representation.<br />

Basic radiometry, similar triangles, and projection model.<br />

Use of standard graphics APIs (see HCI GUI construction).<br />

Compressed image representation and the relationship to information<br />

theory.<br />

Immediate and retained mode.<br />

Double buffering.<br />

3<br />

GV Basic Rendering Rendering in nature, i.e., the emission and scattering of light and its<br />

relation to numerical integration.<br />

Affine and coordinate system transformations.<br />

Ray tracing.<br />

Visibility and occlusion, including solutions to this problem such as<br />

depth buffering, Painter’s algorithm, and ray tracing.<br />

The forward and backward rendering equation.<br />

Simple triangle rasterization.<br />

Rendering with a shader-based API.<br />

10<br />

- 278 -

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!