Course Syllabus (S15)



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.


  • 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.


  • Lectures: Tu&Thu 2:30pm-3:45pm, in Computer Science Building #142
  • Instructor: Rui Wang (ruiwang [at]
    • Office hours: Thur 4pm-5pm, Fri 11am-noon (CS #270) or by appointment
  • TA: Zhaoliang Lun  (zlun [at]
    • Office hours: Wed 4pm-5pm, Mon 2pm-5pm (CS #245) or by appointment
  • Course Slides, Assignments, Quizzes, Grades, Discussion Forum: in Moodle.



  • 1 warm-up assignment (assignment 0), 4 programming assignments, 1 mid-term 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.