I was practicing low level graphics and game engine programming while I was still a student.
It might seem simple, but a lot of things are going on.
Rendering videos using Direct Show overlayed on 3D viewport or under it
Abstract 3D model reader with different implementation depending on the fileformat
DLL contains core engine and abstract classes
Separate DLL for certain implementation (like specific 3D reader)
3D navigation using mouse
etc…