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:

  1. Install a C++ compiler and build programs with warnings enabled, from the terminal and with CMake.
  2. Use types, auto, constexpr, strings, streams and control flow correctly.
  3. Write functions with appropriate parameter passing — values, references, const references and moves.
  4. Choose and use standard containers, iterators, algorithms, lambdas, ranges and views.
  5. Manage resources safely with RAII and smart pointers, and explain when raw pointers are appropriate.
  6. Design classes with invariants, constructors, operator overloading, and correct copy and move behaviour.
  7. Build class hierarchies with virtual functions and interfaces, and know when to prefer composition or std::variant.
  8. Write function and class templates and constrain them with concepts.
  9. Handle errors with exceptions, std::optional and std::expected; work with files, formatting, dates and threads.
  10. Organise a multi-file project, use C++23 features, find bugs with sanitizers and tests, and follow modern best practices.

Course outline

PartLessonsFocus
1. Getting Started01–03Compilers, first program
2. Basics04–11Types, constants, operators, I/O, strings, conversions, control flow
3. Functions12–16References, parameter passing, overloading, namespaces
4. Containers17–23array, vector, views, structs, maps, sets, iterators
5. Algorithms & Lambdas24–26Lambdas, algorithms, ranges
6. Memory & Resources27–30Pointers, smart pointers, RAII
7. Object-Oriented Programming31–38Classes, operators, copy/move, inheritance, polymorphism
8. Templates39–41Function and class templates, concepts
9. Errors & the Standard Library42–47Exceptions, vocabulary types, files, format, time, threads
10. Projects & Modern C++48–53Multiple 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

Lessons 01–07.

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

Lessons 08–11.

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

Lessons 12–16.

Checkpoint: refactor week 2's program into small functions with well-chosen parameter types, inside a namespace.

Week 4 — Containers

Lessons 17–23.

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

Lessons 24–26.

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

Lessons 27–33.

Checkpoint: a BankAccount class with invariants enforced by its constructor and members, owned through smart pointers by a Bank class.

Week 7 — Advanced classes

Lessons 34–38.

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

Lessons 39–43.

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

Lessons 44–49.

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

Lessons 50–53.

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.