Some ideas for a curriculum:
Context
- C++ as a standard, compilers as implementations
- a build tool's role in handling compilation and linking
- compilers having limited abilities, having limited warnings and analysis by default
Build tools
- evolution: e.g. make -> autotools, cmake, meson
- focus on meson as the build tool of choice (personally I'd avoid CMake since it has a lot of legacy baggage)
Testing
- gtest/gmock
- catch
- designing for testing
Analysis tools
- why you should care: security, catching bugs
- cranking up built-in compiler warnings to reasonable standards
- external tools like clang-tidy, cppcheck
- sanitizers: address sanitizer, leak, thread, etc.
- fuzzing
Dependency management (probably the toughest, since it's still a mess)
- history: usually just relying on system packages, or installing libraries globally from source
- Conan (probably the best option for simple dependencies that's actually catching on)
- CMake external projects, Git submodules
- Docker
- Nix (if you're feeling adventurous)