From building with clang++ and iostream to classes and RAII, the STL, templates, smart pointers, ranges and threads, and finally CMake and unit tests. Over 50 lessons, you'll get to the point where you "let types manage resource lifetimes, and can build and ship one small tool." Every code sample, compile error, and sanitizer report was actually run with clang++ 21 (C++23).
The 50 lessons are split into 7 chapters. We recommend going in order from chapter 1, but feel free to jump to whatever interests you. Note: C++ can't run in the browser, so compile and try the samples locally with clang++ 16 or later, or g++ 13 or later (with C++23 support). The course assumes you know C (pointers and malloc).
You'll rewrite code you could write in C using C++ tools, learning iostream, references, namespaces, auto, range-based for, and overloading along the way. By the end of this chapter, you'll be able to read and write C code as C++.
You'll bundle data and behavior into classes, and let constructors and destructors tie resource lifetimes to types. Then you'll cover copying, moving, and operator overloading, ending with types you wrote yourself that work naturally with = and +.
You'll learn vector, map, and set, plus the iterators and algorithms that cut across all of them. Loops you used to write by hand become a single line from <algorithm>, and lambdas let you pass "how to compare" right on the spot.
Stop copying the same logic for every type and fold it into one template. You'll cover specialization, parameter packs, constexpr, and concepts, and get to the point where you can read template errors on your own.
First you'll actually break things with new and delete, then replace them with unique_ptr and shared_ptr. You'll learn to write code that doesn't leak resources even when exceptions fly, and finish by checking the Rule of Five with a string class you write yourself.
This chapter covers optional, variant, string_view, span, and ranges, plus threads and synchronization. You'll express "a value that might be missing" and "exactly one of several types" with types, and run multiple tasks at the same time.
You'll put together header splitting, CMake, unit tests, and sanitizers to finish one small tool. Finally, we'll line up the differences from C and Rust and hand you a map of where to go next.
Once you've finished all 50 lessons, move on to Rust for Beginners, where the compiler watches ownership for you; the C Intro Course, the foundation C++ is built on; or Intro to Shipping and Running a Service, to ship what you build. A membership unlocks every course.