01Compilers & the build process
GCC, Clang and MSVC; what happens between source code and a running program.
45–75 minOpen lesson 02Compilation vs linking; object files and executables
The four stages, .o object files, and why a missing definition is a linker error.
45–75 minOpen lesson 03Basic syntax, variables and types; auto basics
Statements, int/double/bool/char, const, initialization and auto.
45–75 minOpen lesson 04Comments, formatting and naming
// and /* */ comments, readable layout, and naming conventions used in ROS 2.
30–45 minOpen lesson 05Input and output: std::cout, std::cin, streams
Printing, reading numbers, checking that input succeeded, and string streams.
45–75 minOpen lesson 06Control flow: if, else and switch
Making decisions, comparing values, and the C++17 if-with-initializer.
45–75 minOpen lesson 07Loops: for, while and do-while
Counting loops, range-based for, conditions, break and continue.
45–75 minOpen lesson 08Functions: parameters, return types and overloading
Declaring and calling functions, default arguments, and overloads by parameter type.
45–75 minOpen lesson 09Arrays and strings: raw arrays, std::string, std::array
Fixed-size arrays, why raw arrays are risky, and safe alternatives.
45–75 minOpen lesson 10Pointers and references: T*, T& and passing by reference
Addresses, dereferencing, nullptr, references, and const references.
60–90 minOpen lesson 11Memory model: stack vs heap, new/delete, and why raw pointers are dangerous
Where objects live, manual allocation, leaks and dangling pointers.
60–90 minOpen lesson 12Structs and classes: members, methods and constructors
Bundling data and behaviour, public and private, constructors, const methods.
60–90 minOpen lesson 13RAII: deterministic cleanup, and why ROS 2 uses it everywhere
Acquire in the constructor, release in the destructor, and stay leak-free.
60–90 minOpen lesson 14Encapsulation
Private data, a small public interface, and class invariants.
45–75 minOpen lesson 15Inheritance
Base and derived classes, protected members, and the 'is-a' rule.
45–75 minOpen lesson 16Polymorphism and virtual functions
Calling the right function through a base pointer, override and virtual destructors.
60–90 minOpen lesson 17Abstract classes and interfaces
Pure virtual functions, interface classes, and swapping real hardware for a fake.
45–75 minOpen lesson 18Operator overloading
Giving your types +, ==, and << with clear, predictable meaning.
45–75 minOpen lesson 19Namespaces
Avoiding name clashes, using declarations, and the ROS 2 naming style.
30–45 minOpen lesson 20Header files and project structure
Declarations in .hpp, definitions in .cpp, include guards and folder layout.
45–75 minOpen lesson 21Exceptions
try, catch, throw, exception types, and safe cleanup during unwinding.
45–75 minOpen lesson 22Error handling patterns
Return codes, exceptions, std::optional results, and choosing between them.
45–75 minOpen lesson