I have taken Computer Graphics as one of my electives in Carnegie Mellon University during Fall 2012. The class gives a comprehensive introduction to computer graphics. The class assignments include linear algebra and implementation of several schemes covering different aspects when rendering with OpenGL.
Image below: Implementation of a ray tracer. First use a ray cast function to detect intersection and return material diffuse color. Then calculate direct illumination (Blinn-Phong shading) according to the position of lights in scene and model texture. Finally calculate reflection/refraction, compose using Schlick approximation.
Image below: Screenshot of a scene rendered using GLSL shaders. Outline and motion-blur effects are implemented.
Image below: Implementation of loop subdivision algorithm. This algorithm allows one to start with a very coarse mesh and procedurally create something much more smooth.