This course examines the architecture and capabilities of modern GPUs. The graphics processing unit (GPU) has grown in power over recent years, to the point where many computations can be performed faster on the GPU than on a traditional CPU. GPUs have also become programmable, allowing them to be used for a diverse set of applications far removed from traditional graphics settings. Topics covered include architectural aspects of modern GPUs, with a special focus on their streaming parallel nature, writing programs on the GPU using high level languages like Cg and BrookGPU, and using the GPU for graphics and general purpose applications in the area of geometry modeling, physical simulation, scientific computing and games. Students are expected to have a basic understanding of computer architecture and graphics, and should be proficient in OpenGL and C/C++. This course is appropriate as an upper-level undergraduate CIS elective. CIS 4600 or CIS 5600, and familiarity with computer hardware/systems. The hardware/systems requirement may be met by CIS 4710/CIS 5710; or CIT 5930 and CIT 5950; or CIS 2400 (with CIS 4710/CIS 5710 recommended); or equivalent coursework.