Modern C++ Programming Masterclass is a comprehensive course designed to equip developers with the essential and advanced skills needed to write efficient, robust, and modern C++ code. Whether you’re aiming to build large-scale applications, simple tools, or conduct research, this course offers a structured journey through the language’s fundamentals and its modern features.
Overview
Syllabus
- Introduction and Overview
- Introduction
- Course Contents
- Resources
- C++ProgrammingMasterClassLabs
- C++ Programming Masterclass
- 1: Introduction to C++
- C++ Overview Preview
- C++ Hello World • 7 mins
- Builing and Tooling • 26 mins
- External Libraries • 8 mins
- Static and Dynamic Linking • 14 mins
- Package Managers • 9 mins
- 2: Language Fundamentals
- Including Files • 18 mins
- Macros Preview
- Conditional Compilation and Pragmas • 6 mins
- Integral Data Types • 9 mins
- Variables • 23 mins
- loating Point Data Types • 5 mins
- Character Data Types • 2 mins
- sizeof and const • 5 mins
- Literals • 24 mins
- Arrays • 11 mins
- Pointers • 42 mins
- Pointer Arithmetic • 13 mins
- References • 23 mins
- void and void Pointers • 3 mins
- const and Pointers • 12 mins
- Classic Enums • 12 mins
- Scoped Enums • 7 mins
- the volatile Qualifier • 7 mins
- Arithmetic Operators • 5 mins
- Relational and Logical Operators • 7 mins
- Bitwise Operators • 14 mins
- Assignment Operators • 6 mins
- Operators Precedence and Associativity • 4 mins
- Expressions • 1 min
- Modulo, Division and Integral Types • 2 mins
- Control Flow - If Statement • 8 mins
- Initializers in If Expressions • 6 mins
- Control Flow - the Switch Statement • 8 mins
- Control Flow - While and Do While • 5 mins
- Loop Control • 4 mins
- Control Flow - the for Loop • 6 mins
- Functions • 14 mins
- Trailing Return Type Syntax • 7 mins
- the main Function • 15 mins
- Labs Solutions Walkthrough • 26 mins
- Passing Arguments to Functions • 26 mins
- Inline Functions • 6 mins
- Recursive Functions • 8 mins
- constexpr • 12 mins
- Function Overloading • 5 mins
- Default Arguments • 3 mins
- Function Argument Matching • 13 mins
- the Stack and the Heap • 7 mins
- Basic new and delete Usage • 24 mins
- Namespaces • 17 mins
- Casting • 21 mins
- 3: Object Oriented Programming
- Object Orientation • 7 mins
- Classes • 11 mins
- Creating Objects • 22 mins
- Constructors • 20 mins
- Multi-Dimensional Arrays • 5 mins
- the Conditional Operator • 5 mins
- Additional Module 2 Labs Solutions Walkthrough • 1h
- Review and Anonymous Objects • 28 mins
- Delegating Constructors • 7 mins
- const Member Functions and the mutable Keyword • 15 mins
- the this Keyword • 20 mins
- Member Visibility • 10 mins
- static Members • 19 mins
- Explicit Constructors • 8 mins
- Destructors • 12 mins
- Inheritance • 38 mins
- Polymorphism • 18 mins
- More Polymorphism • 22 mins
- Abstract Types • 10 mins
- Copying and Moving • 10 mins
- Copy Constructor and Copy Assignment • 34 mins
- Move Semantics • 21 mins
- Move Constructor and Move Assignment • 24 mins
- Making Things Move • 8 mins
- Defaulted and Deleted Methods • 16 mins
- Object Reuse • 3 mins
- Forward Declarations • 4 mins
- Simple Structure Initialization • 5 mins
- Unions • 9 mins
- Bit Fields • 3 mins
- Nested Types • 4 mins
- 4: Operator Overloading
- Overview • 5 mins
- Member vs. Free Functions • 3 mins
- Unary Operators • 6 mins
- Overloading ++ and -- • 12 mins
- Binary Operators • 4 mins
- Dynamic Cast • 10 mins
- Binary Operators (cont) • 7 mins
- Operator Overloading with Global Functions • 14 mins
- Overloading Cast Operators • 7 mins
- Explicit and Implicit Operators • 6 mins
- 5: Standard Library Basics
- The Standard Library • 7 mins
- Containers • 10 mins
- Vector • 4 mins
- Type Inference (auto) • 19 mins
- Range-Based for • 18 mins
- Array • 5 mins
- Deque and List • 7 mins
- Associative Containers • 44 mins
- New Associative Containers • 16 mins
- Container Adapters • 6 mins
- Iterators • 19 mins
- Algorithms • 26 mins
- Review and Clarifications • 11 mins
- erase and Iterators • 4 mins
- Algorithms and Function Pointers • 11 mins
- Functors • 8 mins
- Strings • 8 mins
- String Views• 11 mins
- Emplacement vs. Insertion • 15 mins
- 6: I/O and Streams
- Streams • 17 mins
- Stream Manipulators • 4 mins
- File IO • 2 mins
- format (C++ 20) • 4 mins
- Using format • 12 mins
- Formatting Custom Types • 9 mins
- 7: Modern Language Features
- Lambda Functions • 40 mins
- Lambda Rules • 7 mins
- Lambda Captures • 4 mins
- Storing Lambdas • 12 mins
- Lambda Functions and auto • 3 mins
- Uniform Initialization • 8 mins
- Initializer Lists • 8 mins
- Compile Time Assertions • 6 mins
- Structural Decomposition • 3 mins
- Attributes • 8 mins
- decltype • 14 mins
- noexcept • 3 mins
- Module 3 Labs Solution Walkthrough • 1h 04m 18s
- Thread Local Storage • 7 mins
- 8: Templates
- Why Templates.mp4 • 5 mins
- Template Functions • 6 mins
- Template Matching • 4 mins
- Multiple Type Parameters • 2 mins
- More on Template Functions • 5 mins
- Template Instantiation • 5 mins
- Template Linkage • 4 mins
- Template Classes • 22 mins
- Default Template Parameters • 1 min
- Memory Allocators • 9 mins
- Template Specialization • 5 mins
- Template Aliases • 10 mins
- Creative Template Usage • 9 mins
- Trait Classes • 26 mins
- More Templates Features • 10 mins
- Template Metaprogramming • 5 mins
- Variadic Templates • 21 mins
- 9: Resource Management
- RAII • 9 mins
- Examples • 49 mins
- RAII in the Standard Library • 2 mins
- Memory Management • 8 mins
- unique_ptr • 18 mins
- Smart Pointer Implementation • 9 mins
- Custom Deleters • 5 mins
- The Pimpl Idiom • 10 mins
- shared_ptr • 15 mins
- weak_ptr • 12 mins
- Error Handling • 7 mins
- Exceptions • 13 mins
- Catching and Handling Exceptions • 19 mins
- 10: The C++ Standard Library
- Overview • 3 mins
- Random Numbers • 6 mins
- variant • 6 mins
- optional • 6 mins
- any • 5 mins
- invoke and apply • 3 mins
- expected • 3 mins
- chrono • 10 mins
- 11: Concurrency
- Threads vs. Processes • 7 mins
- CPUs • 13 mins
- CPUs and Caches • 9 mins
- Interlude - unique_ptr for Arrays • 2 mins
- False Sharing • 17 mins
- C++ Memory Model • 13 mins
- Optimizations • 5 mins
- Atomic Operations • 12 mins
- Lazy Initialization • 5 mins
- Threads • 13 mins
- More Threading • 4 mins
- Synchronization and Mutexes • 10 mins
- Locks and Deadlocks • 8 mins
- Protecting Rarely Updated Data • 4 mins
- Recursive Locking • 3 mins
- Condition Variables • 10 mins
- More Concurrency • 13 mins
- 12: More C++
- Concepts • 16 mins
- Ranges • 5 mins
- Views • 9 mins
- Modules • 15 mins
- Coroutines • 42 mins
- Lab Solutions
- Module02
- Module03
- Module04
- Module05
Taught by
Pavel Yosifovich