CppCon Academy 2024

This year CppCon Academy will offer several onsite and online classes during the weekends before and after the main conference. Whether you’re interested in a deep dive into C++ template programming, or looking to upgrade your C++ design skills, our industry-leading instructors offer a wide spectrum of classes for you to choose from.

Class attendees

Overview

Onsite classes
When:

  • Saturday, September 14th – Sunday, September 15th from 09.00 – 17.00 MDT
  • Saturday September 21st – Sunday, September 22nd from 09.00 – 17.00 MDT

Where: Gaylord Rockies, Aurora, Colorado

Online classes
When:

  • Wednesday, September 11th – Friday, September 13th from 09.00 – 15.00 MDT.
  • Monday, September 23rd – Wednesday, September 25th from 09.00 – 15.00 MDT.

Important

Class registration and conference registration are separate. Attendees can register for either one or both. Class sizes are limited and may sell out.

Details

For individuals whose organization requires it, a certificate of completion is available for classes attended. For information, contact the conference registrar.

Onsite classes include breaks and lunch.

Privacy Notice

In order to facilitate communications preparing students for class sessions, we share class attendee email addresses with instructors (and vice versa). By default we use the email address that you use for registration. If you’d like to use a different email address for the class than what you use for registration, please note that in the appropriate field during registration.

 

Onsite Pre-Conference Classes


C++ Templates for Developers

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!

Tags: Templates, Language updates

 

Advanced and Modern C++ Programming: The Tricky Parts

Instructor: Nicolai Josuttis

Abstract: 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

 

C++ Software Design

Instructor: Klaus Iglberger

Abstract: 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.

Tags: Design

 

Structured Concurrency in C++

Instructor: Mateusz Pusz

Abstract: 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

 

Performance and Efficiency in C++ for Experts, Future Experts, and Everyone Else

Instructor: Fedor Pikus

Abstract: 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

 

Optimizing with Modern C++

Instructor: Patrice Roy

Abstract: 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


High-performance Concurrency in C

Instructor: Fedor Pikus

Abstract: 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

 

Modern C++: When Efficiency Matters

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


Pre-Conference: System Architecture And Design Using Modern C++

Instructor: Charley Bay

Abstract: 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

 

Post-Conference: C++20 in Practice: A Complete Introduction

Instructor: Nicolai Josuttis

Abstract: 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

 

Register for classes here.

 

class