C++ lab exercises for the semester. Each labNN/ folder is a standalone
project with its own build files and a README.md describing the
assignment, its interface, and expected output.
| Lab | Topic |
|---|---|
| lab01 | Polymorphism through base-class pointers |
| lab02 | A 2D image class |
| lab03 | Event-driven game systems |
| lab04 | 2D tile map, view and iterator |
| lab05 | Comparators and the builder pattern |
| lab06 | A strided tensor view |
| lab07 | RPN expression parser and AST |
| lab08 | Composite query objects |
| lab09 | Lazy vector iterator (filter / map / take / collect) |
| lab10 | Notification channels (strategy pattern) |
| lab11 | The decorator pattern via inheritance |
| lab12 | Multiple and virtual inheritance: a World/Entity hierarchy |
| lab13 | A templated DataStore<DataSet>: insertion idioms and cached sorting |
| lab14 | Option<T>, Result<T>, and a small exceptions case study |
| lab15 | A RAII file class, make, and CMake |
Labs 01–14 each build independently with CMake:
cd labNN
mkdir build && cd build
cmake ..
cmake --build .Lab 15 is built differently — see its own README, since
it ships both a hand-written Makefile version and a separate CMake
version on purpose.
The top-level CMakeLists.txt pulls in labs 01–14 as subdirectories, plus
lab15's CMake version (lab15/app), so a single build compiles all of them:
mkdir build && cd build
cmake ..
cmake --build .Each lab's executable(s) end up under build/labNN/ (or build/app/ for
lab15).