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).
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
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
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)
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
Function templates and class templates
Template specialization and variadic templates
Introduction to Modern C++ Concepts (type constraints introduced in C++20)
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
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