C++
Undergraduate · CS / Programming
Syllabus focus
Topics typically covered
Standard syllabus
Core language
- Compilation model; headers, translation units, linkage
- Types, pointers, references, and const correctness
- Control flow, functions, and overloading
- Classes, constructors, destructors, and RAII
- Operator overloading and copy/move semantics (intro)
STL and memory
- Templates and generic programming (intro)
- STL containers: vector, list, map, unordered_map
- Iterators, algorithms, and range-for
- Dynamic memory: new/delete vs smart pointers
- Streams and file I/O
Modern C++ practice
- RAII, smart pointers, and ownership idioms
- Move semantics, rvalue references, and rule of five
- Templates, concepts (survey), and generic programming
- STL algorithms, iterators, and containers choice
- Const-correctness and constexpr basics
- Undefined behavior pitfalls and sanitizer tooling
STEM / applied
Systems programming
- Manual memory management pitfalls and sanitizers
- Multi-file projects with CMake or Make
- Low-level performance: cache locality and move semantics
- Multithreading with std::thread and mutexes (intro)
- Interfacing with C APIs and foreign libraries
Applied projects
- Building a small game or simulator with OOP design
- Parsing binary formats and network buffers
- Unit testing with Google Test or Catch2
- Profiling with perf/Valgrind (intro)
- Modern C++ features (C++11/14/17) used in industry codebases
Systems and tooling
- CMake or equivalent build systems
- Debugging with gdb/lldb and core dumps (intro)
- Profiling CPU and memory hotspots
- Interfacing with C libraries and ABI basics
- Multithreading with std::thread and atomics (intro)
- Capstone: small performant CLI or library with tests
Notes
May be a second programming course or dedicated C++ for systems/graphics tracks.