Contact
Evil Genius SocietyHomeLearnForumLeaderboardSocialsMessages

C++ Modules

No in-browser runner for C++ — you'll install a real compiler and run everything on your own machine, starting with this module.

Getting Started

Install a real toolchain and compile your first program.

  1. Modules 1

    Getting Set Up

    Install a real C++ toolchain and VS Code, and compile your first program.

    6 lessons

    View module

Part I — Foundations

Write a correct 200-line program and understand every character of it.

  1. Modules 2

    What a Compiler Actually Does

    The four build stages, and how to read compiler and linker errors.

    6 lessons

    View module
  2. Modules 3

    Values and Types

    int, double, char, bool, overflow traps, auto, const, and constexpr.

    8 lessons

    View module
  3. Modules 4

    Control Flow

    Conditionals, switch, loops, range-based for, and block scope.

    6 lessons

    View module
  4. Modules 5

    Functions

    Parameters, references, overloading, recursion, and header files.

    8 lessons

    View module
  5. Modules 6

    Arrays, Strings, and Your First STL Tools

    std::array, std::vector, std::string, I/O, and Milestone Project 1.

    9 lessons

    View module

Part II — Memory and the Machine

Where C++ stops being “Python with semicolons.” The hardest part.

  1. Modules 7

    Pointers and References

    Addresses, dereferencing, nullptr, pointer arithmetic, and const placement.

    6 lessons

    View module
  2. Modules 8

    The Memory Model

    Stack vs heap, RAII, leaks, dangling pointers, and undefined behaviour.

    7 lessons

    View module
  3. Modules 9

    Structs, Classes, and Object Lifetime

    Constructors, destructors, copy and move, and the Rules of Three/Five/Zero.

    12 lessons

    View module
  4. Modules 10

    Smart Pointers

    Ownership as design: unique_ptr, shared_ptr, weak_ptr, and choosing between them.

    6 lessons

    View module
  5. Modules 11

    Debugging and Tooling

    Warnings, GDB, sanitizers, Valgrind, and Milestone Project 2.

    6 lessons

    View module

Part III — Modern C++ and the Standard Library

Templates, the STL, lambdas, exceptions, and polymorphism.

  1. Modules 12

    Templates

    Function and class templates, specialization, variadics, and C++20 concepts.

    8 lessons

    View module
  2. Modules 13

    The Standard Library

    Iterators, containers, algorithms, ranges, optional/variant/expected, and span.

    12 lessons

    View module
  3. Modules 14

    Lambdas and Functional Style

    Lambda syntax, captures, the dangling-capture bug, and std::function.

    5 lessons

    View module
  4. Modules 15

    Error Handling

    Exceptions, safety guarantees, noexcept, and when to use error codes instead.

    5 lessons

    View module
  5. Modules 16

    Object-Oriented C++

    Inheritance, virtual functions, slicing, composition, and Milestone Project 3.

    9 lessons

    View module

Part IV — Building Real Software

Multi-file projects, CMake, tests, CI, and design idioms.

  1. Modules 17

    Project Structure and the Build

    Headers, the One Definition Rule, CMake, libraries, and dependencies.

    10 lessons

    View module
  2. Modules 18

    Testing

    Catch2/GoogleTest, fixtures, testing invariants, and CI across compilers.

    5 lessons

    Coming soon
  3. Modules 19

    Idioms and Design

    RAII wrappers, Pimpl, CRTP, type erasure, and Milestone Project 4.

    8 lessons

    Coming soon

Part V — Concurrency

Threads, locks, data races, and the tools that catch them.

  1. Modules 20

    Concurrency

    Threads, mutexes, deadlock, atomics, futures, thread pools, and Milestone Project 5.

    14 lessons

    Coming soon

Part VI — Performance and Depth

Measure, optimize, compute at compile time, and ship a capstone.

  1. Modules 21

    Performance

    Benchmark first: cache locality, copy elision, allocators, and reading assembly.

    10 lessons

    Coming soon
  2. Modules 22

    Compile-Time C++

    constexpr, consteval, type traits, if constexpr, and knowing when to stop.

    5 lessons

    Coming soon
  3. Modules 23

    Interfacing Outward

    extern “C”, the ABI problem, FFI to other languages, and WebAssembly.

    4 lessons

    Coming soon
  4. Modules 24

    Capstone Projects

    Pick a track — graphics, systems, embedded, or numerics — and ship something real.

    5 lessons

    Coming soon