Welcome to a complete, book-length, project-based C++ course that starts from zero and ends at systems-level topics. The course is designed for students, olympiad / competitive programmers, game developers, and backend engineers who want a deep, practical understanding of modern C++ (C++17/C++20).
This repository is structured like a curriculum, not a single tutorial. Each chapter is a standalone learning unit with clear goals, long-form explanations, practical examples, common mistakes, homework, and a mini-project where applicable.
- Fundamentals: syntax, variables, data types, input/output, and comments
- Control flow: branching, loops, and structured program logic
- Core language: functions, arrays, strings, pointers, references, memory management
- OOP and design: classes, constructors, encapsulation, inheritance, polymorphism
- Templates and STL: generic programming, containers, iterators, algorithms
- Algorithms and data structures: sorting, searching, trees, graphs, hash tables
- Practical development: debugging, CMake, Git, file I/O, exceptions
- Modern C++: RAII, smart pointers, move semantics,
auto,constexpr - Systems topics: multithreading, performance, cache behavior, undefined behavior
- Applied tracks: game dev basics, backend/systems, competitive programming
- Projects: calculator, todo app, file-based database, simple game, mini engine, capstone
- Beginners who have never coded in C++ and want a structured path
- Students preparing for exams, interviews, or programming contests
- Developers switching to C++ for performance or systems programming
- Game developers learning engine-level concepts
The course follows a numbered chapter system:
00-introductionthrough21-projectscontain the main lessonshomeworks/contains 5–10 exercises per chapter (no solutions here)quizzes/provides short knowledge checksfinal-project/contains the capstone requirements
- Start at
00-introductionand follow chapters in order. - Read the 📖 READ section first to build conceptual understanding.
- Study the theory, then review the code examples.
- Solve homework for practice and retention.
- Build mini-projects to integrate multiple topics.
- Use quizzes to check your understanding.
If you are already experienced, you can jump to specific chapters, but the course is designed to be sequential.
- Beginner pace: 2–3 chapters per week (8–12 weeks total)
- Intermediate pace: 1 chapter per week with deeper projects
- Intensive pace: 1 chapter per day (review on weekends)
No prior C++ knowledge is required. Basic comfort with using a computer and file system is enough. If you have programming experience in another language, you can move faster through the early chapters.
- Issues and pull requests are welcome.
- Keep explanations beginner-friendly and add examples when possible.
- Do not add solutions to homework in the main branch.
- Maintain consistent style and formatting with existing chapters.
Apache License 2.0. See LICENSE.