This course teaches the fundamental math and algorithms behind modern 2D and 3D graphics techniques. The topics we cover include:
 Digital images, image processing, and digital photography.
 Curves, surfaces, and basic 2D/3D modeling.
 3D transformations, viewing, rendering algorithms
 Basic OpenGL programming and graphics pipeline
 Lighting, shading, texture mapping
 Ray casting and ray tracing
 3D scanning and 3D printing, manufacturing at home
 Physical computing
Note that this is NOT a course that teaches the use of graphics software such as Photoshop, 3D Max, Maya etc. Rather, this course teaches the underpinnings of those software. Throughout the class, students will learn mathematical and algorithmic ways to model the visual world, and write Java programs to implement various algorithms. Therefore, basic math and programming skills are required.
Prerequisites:
 Programming: CMPSCI 187 (Java Programming with Data Structures), or equivalent (such as ECE 242)
 Mathematics: CMPSCI 190DM, or MATH 235, or CMPSCI 240, or equivalent (upon instructor permission)
You must receive a grade of 'C' or better in both prerequisite classes.
Logistics:
 Lectures: Tu&Thu 2:30pm3:45pm, in Computer Science Building #142
 Instructor: Rui Wang (ruiwang [at] cs.umass.edu)
 Office hours: Thur 4pm5pm, Fri 11amnoon (CS #270) or by appointment
 TA: Zhaoliang Lun (zlun [at] cs.umass.edu)
 Office hours: Wed 4pm5pm, Mon 2pm5pm (CS #245) or by appointment
 Course Slides, Assignments, Quizzes, Grades, Discussion Forum: in Moodle.
Textbook:
Workload:
 1 warmup assignment (assignment 0), 4 programming assignments, 1 midterm exam, 1 final project, and weekly quizzes.
 There is no final exam (instead, there is a final project).
 Grading: 50% assignments, 15% midterm, 20% final project, 15% quizzes.

