C++ is a high-performance, statically typed, compiled programming language designed by Bjarne Stroustrup as an extension of the C programming language. It provides low-level memory management alongside high-level abstractions, adhering to the "zero-overhead principle" (you don't pay for what you don't use). C++ is a multi-paradigm language that natively supports procedural, object-oriented, and generic programming.

Module 1: Introduction & Toolchain Setup

  • Introduction to C++ and its evolution (from C++11 to the modern C++26 standard)

  • Setting up compilers (g++, clang, or MSVC) and build automation tools (CMake)

  • The compilation process: Preprocessing, Compiling, Assembly, and Linking

Module 2: Core Syntax & Imperative Programming

  • Primitive data types, variables, initialization syntax, and constants (constexpr, consteval)

  • Control flow (conditionals, loops, and switch-case)

  • Functions, pass-by-value vs. pass-by-reference, and inline functions

Module 3: Memory Management & Pointers

  • Understanding stack vs. heap memory allocation

  • Raw pointers, references, and address-of operations

  • Dynamic memory allocation (new and delete)

  • Modern memory management: Smart pointers (std::unique_ptr, std::shared_ptr)

Module 4: Object-Oriented Programming (OOP)

  • Classes and objects: Access specifiers (public, private, protected)

  • Constructors, destructors, and Resource Acquisition Is Initialization (RAII)

  • The Rule of Three/Five/Zero and Move Semantics (std::move)

  • Inheritance, runtime polymorphism via virtual functions, and vtables

Module 5: Generic Programming & Templates

  • Function templates and class templates

  • Template specialization and variadic templates

  • Introduction to Modern C++ Concepts (type constraints introduced in C++20)

Module 6: The Standard Template Library (STL)

  • Containers: Sequential (std::vector, std::array, std::list) and Associative (std::unordered_map, std::set)

  • Iterators and their types

  • STL Algorithms (std::sort, std::find, std::transform) and the modern Ranges library

Module 7: Advanced Topics & Concurrency

  • Exception handling and RAII-driven safety

  • Multi-threading basics: std::thread, std::jthread, std::mutex, and std::async

  • Sneak peek into C++26: Compile-time reflection and built-in contracts