Revised Dec 18, 2015

CS 488: Introduction to Computer Graphics


Watch a video introduction to this course on YouTube.

General description

This course gives students a solid background in 3-D graphics techniques for use as a tool in more advanced applications. A major part of the course involves hands-on activities using an interactive graphics workstation.

Logistics

Audience

  • CS major students. Usually taken in fourth year.

Normally available

  • Fall, Winter, and Spring

Related courses

  • Pre-requisites: (CM 339/CS 341 or SE 240) and (CS 350 or SE 350) and (CS 370 or 371); Computer Science students only

Enrolment may be limited due to availability of graphics equipment.

For official details, see the UW calendar.

Software/hardware used

  • Linux
  • C++
  • OpenGL

Typical reference(s)

  • Donald Hearn, P. Baker, W. Carithers, Computer Graphics with Open GL (4th Edition), Prentice Hall, 2010
  • Dave Shreiner, The Khronos OpenGL ARB Working Group, OpenGL Programming Guide: The Official Guide to Learning OpenGL, Versions 3.0 and 3.1, 7th ed., Addison Wesley, 2009

Required preparation

At the start of the course, students should be able to

  • Write programs in UNIX with C++
  • Use and understand linear algebra, calculus, numerical analysis including numerical linear algebra, data structures, and algorithms

Learning objectives

At the end of the course, students should be able to

  • Carry out mathematical constructions on points, vectors, and transformations in affine spaces
  • Explain the algorithmic and mathematical concepts used at each stage of a modern graphics pipeline
  • Write interactive programs that display and manipulate 2D and 3D geometry
  • Write a ray tracer

Typical syllabus

Graphics environment (4 hours)

  • Overview of a representative processing sequence that connects application programs with images they display on screen
  • Outline of the graphics library students will use and the graphics workstation hardware

Mathematical underpinnings (4 hours)

  • Review of concepts and tools: points, vectors, lines, planes, matrices, dot and cross products, vector space, affine space, projective space, etc.

Transformations (4 hours)

  • 2- and 3-dimensional translation, rotation, and scaling as matrix operations
  • Homogeneous coordinates
  • Clipping, windowing, and viewing with perspective

Interrupting, picking, polling, callbacks (10 hours)

  • Management of picking, selecting, and control tasks through the use of event queues, interrupts, and device polling
  • Windowing systems and user interface toolkits

Hidden surfaces and shading (4 hours)

  • Standard lighting models and their implementation
  • Hidden-surface elimination using depth buffering, scanline coherence, and subdivision
  • Polygon filling

Ray tracing (4 hours)

  • Basic ray tracing techniques for generating shadows, mirror reflections, and refraction
  • Constructive solid geometry models

Physically based rendering (4 hours)

  • Radiosity, bi-directional path tracing, global illumination

Discretionary topics (5 hours)

  • Topics are chosen at the discretion of the instructor. Possible topics include more depth on any of the previous topics, human vision, colour theory, anti-aliasing, database amplification, animation, scientific visualization, graphics hardware support, higher-order curves and surfaces, and dynamic simulation.