Learn C++
Choose a module to start learning. Each module builds on the previous one — we recommend going in order.
C++ Fundamentals
Master the core building blocks of C++ — from your first program to control flow and functions, with only a modest amount of tea required.
Object-Oriented C++
Classes, objects, inheritance, polymorphism, and the pillars of OOP in C++, with rather fewer tears than you might fear.
Memory & Resources
Master C++'s ownership model, from raw pointers through smart pointers and move semantics, and write code that never leaks (unlike the office kettle).
Templates & Generic Programming
Write genuinely generic, reusable, zero-overhead abstractions using templates, concepts and compile-time programming, without once copying and pasting a function.
STL & Algorithms
Master the Standard Template Library — containers, iterators, algorithms, ranges, and functional programming. Rather more satisfying than it sounds.
Error Handling & Safety
Write robust C++ code with proper error handling — exceptions, RAII safety guarantees, sum types, and defensive programming patterns. Panicking is optional, though traditional.
Concurrency
Write correct, efficient multithreaded C++ — threads, synchronisation, atomics and parallel algorithms, without needing a lie-down afterwards.
Modern C++ & Best Practices
The latest C++ standards (C++17/20/23/26), build systems, testing practices, and professional coding guidelines, with only a modest amount of tutting.