Key concepts: Solidify your understanding of essential and modern C++ features.
Hands-on focus on arrays, functions, memory management, OOP, templates, STL, and concurrency.
Develop a strong foundation for advanced topics and certification readiness.
Gain practical experience by writing and running code (~70% hands-on).
How this course helps: build confidence to use C++ effectively in real projects.
Who it’s for: designed for developers with basic C++ knowledge who want to advance.
By the end you’ll be able to apply intermediate-level C++ confidently and prepare for CPA exam.
Curriculum
Intro to C++ programming
- Build process: from source to binary; artifacts produced at build time
- Working with strings
- Standard input and output
- String formatting
- Control flow: conditions, loops, switch
- Floating point basics: representation, precision, comparison
- Working with arrays
- Multi-dimensional arrays and their sizes
- Array operations: sorting and simple reduce operations
Elements of modern C++
- The auto keyword
- nullptr
- Return type deduction
- decltype, typeid, type traits
- Strongly-typed enums (scoped enums)
- static_assert and applications
- override
- Defaulted constructors
- constexpr
- Working with random numbers in modern C++
The function mechanism
- Working with functions
- Function parameters
- Return type
- Local vs. global variables
- Warnings about using global variables
Pointers and memory
- Variables and addresses; memory layout
- Pointer basics and pointer arithmetic
- NULL vs. nullptr
- Dynamic allocation with new and delete
- Pointers and arrays; multi-dimensional arrays
- Arrays and functions
OOP in C++
- struct vs. class; classes and objects
- Abstraction and encapsulation
- Constructors and destructors; overloading constructors
- Initialization list vs. member initialization
- The this keyword
- friend, private, protected, public
- Composition, inheritance, polymorphism, dynamic dispatch
- final classes and methods; override and delete
- Delegating constructors
Templates
- Function templates and type inference
- Class templates; nested template classes
- Variadic templates
Practical functional programming
- Function pointers
- Functors
- Lambdas
- Lambda parameters and return types
- Lambda capture expressions
- How lambdas work
- Generic lambdas; mutable lambdas
The Standard Template Library
- Vectors; vectors and memory; multi-dimensional vectors
- Lists
- Maps (objects as values and keys)
- Multimaps
- Sets
- Stacks
- Queues and deques
- Algorithms
Multithreading and parallelism
- Basics: visibility, atomicity
- Atomic operations in modern C++
- Mutexes and locks
- Condition variables: usage and scenarios
Under the hood
- Runtime cost of C++ features
- Virtual and pure virtual functions
- Object addresses under (multiple) inheritance
- No-cost C++ features vs. low-cost C++ features
Misc
- rvalues and lvalues
- lvalue references vs. rvalue references
- Move constructors and move assignment operators
Course Day Structure
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:30–15:45
- Part 4: 15:45–17:30