Slide Background

C++ Programming

C++ training courses

Programming in C++

This course provides an introduction to modern programming in the C++ language. You will discover fundamental programming techniques in C++ - class creation, inheritance and polymorphism, safe memory management for objects (smart pointers), exception handling. This course is also recommended for C developers willing to learn the principles of designing object-oriented software in C++. We focus on the C++11/14 standard.

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.

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++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++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.

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.

Standard Template Library

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.

Multithreading in C++

The course delves into the core concepts and techniques of multithreading in C++11. 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.

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.

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.