Syllabus & Study Plan
What the C++ course covers, what you'll be able to do by the end, and a suggested ten-week schedule with a checkpoint each week. Install a compiler first (lesson 2) — writing and compiling code yourself is the fastest way to learn.
Who this course is for
Beginners who want a powerful, widely used systems language; students preparing for C++-based university courses or game development; and programmers coming from C, Java, C# or Python who want to write idiomatic modern C++ rather than "C with classes".
Learning outcomes
By the end of the course you will be able to:
- Install a C++ compiler and build programs with warnings enabled, from the terminal and with CMake.
- Use types,
auto,constexpr, strings, streams and control flow correctly. - Write functions with appropriate parameter passing — values, references,
constreferences and moves. - Choose and use standard containers, iterators, algorithms, lambdas, ranges and views.
- Manage resources safely with RAII and smart pointers, and explain when raw pointers are appropriate.
- Design classes with invariants, constructors, operator overloading, and correct copy and move behaviour.
- Build class hierarchies with virtual functions and interfaces, and know when to prefer composition or
std::variant. - Write function and class templates and constrain them with concepts.
- Handle errors with exceptions,
std::optionalandstd::expected; work with files, formatting, dates and threads. - Organise a multi-file project, use C++23 features, find bugs with sanitizers and tests, and follow modern best practices.
Course outline
| Part | Lessons | Focus |
|---|---|---|
| 1. Getting Started | 01–03 | Compilers, first program |
| 2. Basics | 04–11 | Types, constants, operators, I/O, strings, conversions, control flow |
| 3. Functions | 12–16 | References, parameter passing, overloading, namespaces |
| 4. Containers | 17–23 | array, vector, views, structs, maps, sets, iterators |
| 5. Algorithms & Lambdas | 24–26 | Lambdas, algorithms, ranges |
| 6. Memory & Resources | 27–30 | Pointers, smart pointers, RAII |
| 7. Object-Oriented Programming | 31–38 | Classes, operators, copy/move, inheritance, polymorphism |
| 8. Templates | 39–41 | Function and class templates, concepts |
| 9. Errors & the Standard Library | 42–47 | Exceptions, vocabulary types, files, format, time, threads |
| 10. Projects & Modern C++ | 48–53 | Multiple files, CMake, C++23, safety, testing, final project |
Ten-week study plan
Plan on four to six hours a week, including time writing your own programs.
Week 1 — First programs
Checkpoint: a unit converter that reads a value and unit, validates the input, and prints a neatly aligned table of conversions.
Week 2 — Strings and control flow
Checkpoint: a text analyser that reads lines until end of input and reports word count, longest word and whether each line is a palindrome.
Week 3 — Functions
Checkpoint: refactor week 2's program into small functions with well-chosen parameter types, inside a namespace.
Week 4 — Containers
Checkpoint: a contact book using a vector of structs and a map from names to phone numbers, with add, find and delete.
Week 5 — Algorithms
Checkpoint: rewrite the contact book's searching and sorting with algorithms, lambdas and views — no hand-written loops for those tasks.
Week 6 — Memory and classes
Checkpoint: a BankAccount class with invariants enforced by its constructor and members, owned through smart pointers by a Bank class.
Week 7 — Advanced classes
Checkpoint: a shape hierarchy with an abstract base, virtual functions, comparison operators and stream output, stored in a vector of unique_ptrs.
Week 8 — Templates and errors
Checkpoint: a generic, concept-constrained Statistics<T> class, plus a parser that returns std::optional or throws for bad input.
Week 9 — The standard library at work
Checkpoint: load and save your contact book from a file, format reports with std::format, split the project into headers and sources, and build it with CMake.
Week 10 — Modern C++ and the final project
Final project: complete at least three of the library catalogue's challenges, run it under the sanitizers, then take the quiz and aim for 25 out of 30 or better.
Faster tracks
- Know C? Skim Parts 1–2, then focus on references (13–14), containers and algorithms (17–26), RAII and smart pointers (29–30), and classes (31–38).
- Know Java or C#? Pay special attention to value semantics, references vs. pointers, RAII, copy/move (35) and the fact that objects aren't heap-allocated by default.
- Returning to C++ after years away? Read lessons 14, 19, 26, 29, 35, 41, 43, 45 and 50 for what's changed since C++03.
Practice resources
- Playground — a starter program to experiment with.
- Exercises — 41 fill-in-the-blank tasks and five programming challenges.
- Quiz — 30 questions with explanations.