My colleague Thomas Weber and I rebuilt the lab course "Introduction to Computer Graphics" from scratch at the Vienna University of Technology in 2010. We were asked to write a software framework that could be used throughout the complete course where each assignment completes another feature of a didactic software rasterizer.
The framework called CG1LAB implements an interactive 3D editor with its own software rasterizer. It includes a modern graphical user interface and allows the user to create, save and load content using COLLADA, an open standard for 3D content exchange. The primary educational objective is to provide the students with a practical understanding of a modern graphics pipeline. We defined six programming assignments of increasing difficulty within the sources of the framework's renderer to accomplish this. These cover aspects of raster-level operations, 3D transformations, virtual cameras, illumination and shader programming. The students are able to interact with their solution through the application's GUI by modifying parameters. They are also able to create scenes and have them rendered by their implementations.
This lab course on introductory computer graphics is taken by undergraduates in the third semester. Therefore we chose Java as the programming language for being more approachable for beginners than C++. We took great care of modeling the concept of shaders and the way they are used within the graphics pipeline as close to OpenGL as possible. Therefore, our students should be able to learn the correct use of the OpenGL graphics standard - which is part of later computer graphics courses at our university - much faster.
The ability to load and save COLLADA files greatly improved the motivation of our students since they were able to have their own implemention render actual real-world content. Check out the student's user galleries or our own COLLADA resources Wiki pages for some great examples.
UPDATE: Version 2.x includes texturing and many new features. You can run an updated demo at the upper-right side of this page. You will also find a link to a recent Eurographics 2012 publication where we describe our framework.