Onsite Pre-Conference Classes
Instructor: Walter E. Brown
Abstract : As an intermediate-level C++ programmer, you already know about and have very likely used one or more kinds of C++ templates in your code. Whether you’ve applied std::vector or std::array to your work, or called upon any of the multitude of algorithms that the standard library provides, you’ve experienced some of the power that templates add to a C++ programmer’s toolkit.
Come discover how the world of C++ templates will open to you once you’ve mastered a modest handful of straightforward, key insights and principles. Whether it’s programming generically, or with variadics, SFINAE, concepts, overloading, or other coding practices, this Workshop will allow you to explore and apply template-based techniques that will help solve problems in your programming domain!
Tag s : Templates, Language updates
Instructor: Nicolai JosuttisAbstract : Whenever I give C++ training I run into the same topics of “half knowledge”. We use a lot of pretty complicated features (e.g., templates, move semantics, and smart pointers) in our day-to-day programming without full understanding. Most of the time this works fine, but sometimes not. Even vectors and strings may cause surprises (e.g., to understand when and how memory is allocated).
This tutorial will discuss all these “tricky fundamental” C++ features application programmers see and use day by day. We will motivate them, understand them, and see how they should be used in practice. As a result, you will understand C++ a lot better and advance to the next level of an experienced C++ programmer.
As a long-time member of the C++ standards committee and experienced trainer, Nicolai will also give useful background information about purpose and design decisions.66eb4584f28c9f60cdbcf393
Tags: Language updates, Design
I nstructor: Klaus IglbergerAbstract : Good Software Design — the proper management of dependencies — is the foundation for the success of a project. The basic building blocks for software design are design patterns. Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.
This training class explores modern C++ software design and the modern forms of classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enables programmers to create professional, high-quality code.
Tag s : Design
I nstructor: Mateusz PuszAbstract : Today, C++ software is increasingly asynchronous and parallel, a trend that is likely only to continue going forward. While the C++ Standard Library has a rich set of concurrency primitives and lower-level building blocks, we lack a standard framework for asynchrony and parallelism that C++ programmers desperately need.
This training shows that concurrency is not only about the C++ Standard Library threading and synchronization low-level tools. During the workshop, you will learn how to write efficient, asynchronous, and highly concurrent code without the need for any manual synchronization between threads, leading to simpler code and faster runtimes. During the hands-on exercises, you will implement coroutine tools from scratch and create parallel processing pipelines with a new framework called Senders/Receivers proposed for standardization as a part of C++26. The Senders/Receivers framework is publicly available on GitHub so that it can be used in production immediately without the need to wait for the next C++ release. Tags : Language updates, Concurrency, Parallelism
I nstructor: Fedor PikusAbstract : This class is about performance and efficiency, spanning the entire range from the fundamentals of the hardware to the peculiarities of compiler optimizations. You will learn, on practical examples extracted from real-life programs, how to measure, analyze, and improve the performance of your programs. But most importantly, you will learn how to understand why your programs, compilers, and hardware behave the way they do. Some of the material will be basic and fundamental, some cutting-edge and esoteric, and the rest somewhere in between. All explanations will be reinforced with hands-on exercises, which you get to do in the classroom and can explore later in detail if you want to learn more. Tags : Performance, Optimization, Concurrency
Instructor: Patrice RoyAbstract : C++ is seen by many as a language one uses to get more from a program: more speed, more deterministic behavior, lower resource consumption, etc. Interestingly, C++ does not necessarily make programs faster or smaller; what C++ brings to programmers is control, and that control can lead to all sorts of optimizations.
Optimization is a vast and multifaceted topic no-one could hope cover completely in the span of a 15-hours course. For this reason, this course focuses on how to leverage “modern” C++ (C++ as we’ve come to know and love it since the C++11 revolution came upon us all) to make programs faster, smaller and otherwise more efficient.
Tags : Performance, Optimization, Compile time programming, Design
Onsite Post-Conference Classes
I nstructor: Fedor PikusAbstract : This course is designed to empower participants with the knowledge and skills required to unlock the full potential of high-performance concurrency in C++. By delving into fundamental principles and advanced techniques, attendees will gain a profound understanding of how to design, implement, and optimize concurrent programs effectively.
The class begins by addressing the essentials of performance and guiding participants on how to evaluate and measure the efficiency of concurrent programs. Emphasis is placed on the significance of performance measurement, providing insights into practical methodologies for assessing program efficiency.
Tags : Performance, Hardware , Concurrency
Instructor: Andreas Fertig
Abstract: You will learn about various features of modern C++, how they work, where to use them, and how they translate to code. With that knowledge, you understand what each feature brings you and its costs regarding code size and performance.
You will learn how to write less code and get the same result. Less code helps you to save human resources when it comes to maintenance and debugging.
In times where a lot of applications are battery-powered, saving run-time is a great asset. As part of this class, you will learn to control the footprint and the speed of your binary.
You will learn all topics with exercises and live demos in C++ Insights and Compiler Explorer.
Tags: Language updates, Design
Online Classes
Instructor: Charley BayAbstract: This course is intended for intermediate and advanced C++ engineers with experience making architectural and design decisions, or who are evolving into roles that demand proficiency in system-level analysis and decision making. We will focus on Modern C++ and deeply explore successes and failures in projects and systems from a variety of industries. And, we will discover that some crossroads are universal, despite the unique concerns that may present pragmatic challenges and cause technical implications to be ranked differently based on the specific domain to which the solution is applied. Tags: Design, Architecture, Analysis
Instructor: Nicolai JosuttisAbstract : C++20 is the latest new release of C++, now supported by major compilers. This class teaches it in a way that you understand its power and can start to use it in practice.
C++20 is huge. It will change the way we program more dramatically than C++11 did. As usual, not everything is self-explanatory, combining new features gives even more power, and there are hidden traps. So, the key question is what this means in practice.
This class will go through all major and important minor features of C++20 (covering both language and library), introduce them conceptually, provide compelling examples, and give key insights and hints about how to use them in practice. Tags: Language updates