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.
