Each project introduces new C++ concepts, building on what you already know from Python. Work through them in order. Each project's README describes what to build and what's new.
| # | Project | Key New Concepts |
|---|---|---|
| 01 | hello-build | Compilation, headers, main(), iostream |
| 02 | type-explorer | Static typing, primitives, sizeof, casting |
| 03 | string-toolkit | std::string, references, const, pass-by-value vs pass-by-ref |
| 04 | collections | vector, array, map, iterators, range-based for |
| 05 | memory-basics | Stack vs heap, new/delete, RAII, unique_ptr |
| 06 | oop-shapes | Classes, constructors, destructors, inheritance, virtual |
| 07 | error-handling | Exceptions, noexcept, std::optional, error codes |
| 08 | template-math | Function/class templates, template specialization |
| 09 | file-cruncher | File I/O, streams, binary vs text, serialization |
| 10 | concurrency-pi | std::thread, mutex, async/future, atomics |
| 11 | smart-containers | Move semantics, rule of five, custom allocators |
| 12 | network-chat | Sockets (POSIX), select/poll, non-blocking I/O |
| 13 | plugin-loader | dlopen/dlsym, shared libraries, extern "C", ABI |
| 14 | expr-parser | Variants, std::visit, recursive descent, compile-time tricks |
| 15 | mini-stl | Iterators, operator overloading, SFINAE, concepts (C++20) |
All projects use a simple Makefile. From any project directory:
make # build
make run # build and run
make clean # remove build artifacts