C++ Programming
C++ training courses
Modern C++ Programming
Tailored to software engineers looking to master modern C++. This course takes a comprehensive approach to explaining and applying core features introduced in C++11/14/17 that improve code quality, performance, and developer productivity Participants learn how to write clean, efficient, and maintainable code using modern idioms, RAII, smart pointers, move semantics, templates, ranges and best practices used in real‑world C++ projects.
Advanced Programming in C++
Intended for C++ developers, this hands-on course is designed to provide you with skills required to write faster and robust C++ code. It begins by introducing the concepts of generic programming - function and class templates, feature and guideline classes, variadic templates. Next, it covers the resource management in C++ - the RAII idiom. Dynamic memory management and smart pointers are discussed in detail. You will also learn the advanced metaprogramming techniques using templates, constexpr expressions and constexpr functions.
Multithreading in C++
The course delves into the core concepts and techniques of multithreading in C++. You will discover basic thread launching and synchronization facilities (mutexes, conditional variables, atomic variables, etc.). You will learn how to create thread-safe queues and how to implement the Thread Pool and Active Object patterns.
Asynchronous Programming in C++ - Structured Concurrency
The training introduces a modern paradigm of concurrent programming in C++26, shifting from traditional threads and callbacks to coroutines and the Senders/Receivers model. The goal of the course is to provide a practical understanding of coroutines and the std::execution library, enabling the design of asynchronous algorithms. We will also explore new techniques of asynchronous task composition, cancellation and error handling.
Advanced Template Programming in C++
This course focuses on C++ techniques for generic programming. You will learn how to write secure and maintainable code using templates. The most common idioms of template implementation in C++ are discussed in detail: enable_if, tag dispatching, head-tail, etc.
Design Patterns in C++
Geared for C++ developers wishing to improve their object-oriented design skills. This training course focuses on the most popular design patterns and the principles and governors behind these patterns. We will discuss the pros and cons of using design patterns in specific cases. By the end of the course, you will be equipped with the skills necessary to apply design patterns to real-world software development challenges. You will also learn how to improve the design of existing code with pattern-directed refactoring (refactoring to SOLID).
Test-Driven Development with C++
This course covers modern Test Driven Development techniques in C++. You will discover the principles of designing object-oriented software for testing - SOLID OOP, Dependency Injection, etc. You will write unit tests using mock objects (stub and mock) and organize them in a project developed in the TDD methodology.
Safe C++
The goal of this course is to teach engineers how to write, review, and harden C++ code to minimize memory‑safety and undefined‑behavior vulnerabilities while preserving performance and interoperability with existing codebases.
Effective STL & Ranges
Aimed at C++ programmers who want to learn how to combine STL components to take full advantage of the library’s design. You will discover the differences between the containers available in the standard library and learn how to choose the optimal container depending on the context. You will explore iterators, their categories (concepts) and learn how to use and create STL-compatible iterators. We will delve into the rich library of standard algorithms (also in the concurrent version - Parallel STL) and show how to put them to use for real-world problems.
Programming in C++26
The course presents the key new features introduced in C++26 and their practical applications. We will explain how to apply contracts to improve API quality, and how to work with the new unified asynchronous model based on Sender/Receiver and tasks. You will also learn how to use static reflection for automatic code generation. The program covers essential standard library extensions, such as new containers, enhancements to std::ranges, saturating arithmetic, and features that bolster memory safety. The course prepares you to design modern interfaces, refactor existing projects, and fully leverage the capabilities of C++26.
Programming in C++20
This training course demonstrates how you can get the most out of C++20. We will explore a new comparison operator <=> and new generic programming concepts and template features. We will explain how to process collections using the Ranges library. You will discover new features in the standard library: std::span and std::format and new features for compile-time programming ( consteval and constexpr). You will also learn how to structure applications using modules and implement coroutines.
Programming in C++17
The course provides you with an overview of C++17 language and library features. You will learn how to use new language components, including structured bindings, control statements with an initialization section, new attributes. You will discover new features in C++ templates, such as the type parameter deduction mechanism for template classes (CTAD) and fold expressions for variadic templates. The course also covers new types available in the standard library std::string_view, std::optional, std::any and std::variant as well as concurrent algorithms - Parallel STL.
Programming in C++11/14
Designed to update developer with the new C++11/14 features. You will explore the extensions to the C++ language, such as 'nullptr', auto and decltype deduction mechanisms, the range-based fo loop, strongly typed enumeration types (scoped enums) and uniform initialization syntax. You will learn how to implement move semantics for classes and when and how to use perfect forwarding. We will explain how to use lambda expressions in combination with the STL library. The course also covers new features in the standard library, such as std::tuple, hash containers, and new standard algorithms.
Programming in C++
This course provides a solid introduction to C++ programming, focusing on essential language features, object‑oriented design, memory management with smart pointers, exception handling, and practical development techniques This course is also recommended for C developers willing to learn the principles of designing object-oriented software in C++. We focus on the modern C++11/14/17 standard.