Learn C++ Programming

From first program to advanced systems programming, with hands-on exercises at every step.

Support Free C++ Education

Help us keep this platform free for everyone! Your support enables us to create more high-quality lessons, exercises, and interactive content.

Become a Patron
Beginner
~50h

C++ Programming Fundamentals

Start from scratch with variables, data types, and functions. Build up to operators, control flow, scope management, and your first classes.

8 sections 121 lessons
Learning Sections:
C++ Basics 20 lessons
Built-in Data Types in C++ 13 lessons
Functions and Files 15 lessons
+5 more sections
Intermediate
~55h

C++ (plus)

Go deeper with type inference, references, enums, structs, and function templates. Covers compile-time evaluation, std::vector, and arrays.

8 sections 104 lessons
Learning Sections:
Type Systems and Automatic Type Inference 11 lessons
References and Memory Addresses 17 lessons
Custom Data Types with Enums and Structs 17 lessons
+5 more sections
Advanced
~65h

Advanced C++ Programming

Dynamic memory, operator overloading, move semantics, inheritance, virtual functions, class templates, exception handling, file I/O, and multithreading.

10 sections 107 lessons
Learning Sections:
Managing Memory at Runtime 14 lessons
Custom Operator Implementations 16 lessons
Efficient Resource Management with Move Semantics 9 lessons
+7 more sections

Beta Courses

Beta

Early access to courses still in development. Content may change as we refine them.

Intermediate Beta
~26h

Reading C++ Assembly

Learn to read the x86-64 assembly your C++ compiles into. Understand registers, the stack, calling conventions, control flow, how C++ features like virtual functions look at machine level, and what the optimizer really does to your code.

7 sections 50 lessons
Learning Sections:
From C++ to Assembly 8 lessons
x86-64 Foundations: Registers and Instructions 8 lessons
Control Flow in Assembly 6 lessons
+4 more sections
Beginner Beta
~19h

C Fundamentals

Learn C from your very first program with memory as your map: see where variables live, follow the call stack, and master pointers and dynamic memory early instead of last. Arrays, strings, structs, and error handling all build on that same picture, with undefined behaviour called by its name and AddressSanitizer checking every program you run.

7 sections 39 lessons
Learning Sections:
Programs, Variables, and Memory 5 lessons
Data, Operators, and Control Flow 6 lessons
Functions and the Call Stack 5 lessons
+4 more sections
Beginner Beta
~42h

ANSI C (C89)

The classic ANSI C university syllabus, taught in its traditional order from tokens and operators through arrays, strings, functions, structures, pointers, files, and linked lists. Every program you write is compiled as strict C89 with pedantic errors, exactly the dialect old exam papers assume, but written correctly: real prototypes, checked return values, safe input, and AddressSanitizer verifying every run. Includes exam notes wherever old compilers and question papers differ from what the language actually guarantees.

16 sections 80 lessons
Learning Sections:
Getting Started with C 4 lessons
Constants, Variables, and Data Types 6 lessons
Operators and Expressions 6 lessons
+13 more sections

Create an account to track your progress and access interactive exercises. Already have one? Sign in.