GitHub

Modern C++ Programming Course

What is the project about?

This project is an open-access course designed to teach modern C++ programming to individuals already familiar with C and object-oriented programming concepts. It covers a wide range of topics, from basic C++ syntax to advanced concepts, design patterns, and performance optimization.

What problem does it solve?

It provides a comprehensive, free, and up-to-date resource for learning modern C++. It bridges the gap between basic C/OOP knowledge and proficient C++ development, incorporating the latest language standards.

What are the features of the project?

  • Free and frequently updated.
  • Extensive coverage: 26 lectures with over 1800 slides.
  • Includes the latest C++ language standards (C++03 up to C++23, and looking ahead to C++26).
  • Practical, non-verbose teaching style with short, structured descriptions and code examples.
  • Minimal code examples focus on specific features.
  • Covers complementary aspects like tools, coding conventions, project organization, and optimization.
  • Experience-based, drawing from real-world software engineering scenarios.
  • All-in-one book is available.

What are the technologies used in the project?

  • C++ (multiple standards, up to C++23).
  • CMake (for build system).
  • Doxygen (for documentation).
  • Various debugging and testing tools (Valgrind, Sanitizers, GDB, etc.).
  • Static analysis tools (clang-tidy).
  • Performance analysis tools (gprof, uftrace, callgrind, cachegrind, perf).
  • Other tools like Compiler Explorer, CppInsights, ugrep, ripgrep, hypergrep, searchcode/grep.app, Quick-Bench.

What are the benefits of the project?

  • Provides a structured learning path for mastering modern C++.
  • Free and open-source, making it accessible to everyone.
  • Keeps up-to-date with the latest C++ standards.
  • Offers practical insights and real-world examples.
  • Covers a broad range of topics, including best practices and optimization.

What are the use cases of the project?

  • Learning C++ for beginners with prior C/OOP experience.
  • Refreshing or updating C++ knowledge for experienced developers.
  • Serving as a reference guide for modern C++ features and best practices.
  • Using as course material for teaching C++ programming.
Modern-CPP-Programming screenshot