C++20: Five Features in Five Weeks

You may have noticed that I offer a new class, C++20: Five Features in Five Weeks. Today I like to tell you a bit about the background of this class.

Since the pandemic started, I'm looking for the best way to offer live virtual classes. Best here means with a focus on you, the participants. Questions I ask are:

  • Which format is the best?
  • What is the optimal duration? So how many days and how many class hours per day?
  • What is a good class/break ratio?
  • What is the best time-zone?
  • Which language? Luckily I speak only German and English.

I tried to collect various data points of the above. What I'm looking at is still not a picture with a clear tendency. For example, with a 6-8 hrs duration per day, the optimization for time-zones is difficult. I tend to perform badly after midnight in my time-zone.

Different people have different needs. Hence there is a group of people who favor full-day classes over multiple half-days, and of course, the other way around.

I think we all lost something with the live virtual classes, the change of the location. This gives, at least me, a different feeling. I'm away from usual work (as a participant), which allows me to focus better on the class contents. Meeting new people is another element that is easier in-person. All the virtual tools are great, but they cannot get around the limitation of only one person can speak at a time. In an in-person class, during lunch, multiple people can chat with each other at the table, well as long as they keep their voice down.

C++20: Five Features in Five Weeks - Designed for you

C++20: Five Features in Five Weeks

Format and duration

If you're following me and my public offers, you can see that I experiment with the various formats. C++20: Five Features in Five Weeks is another format. The goal of this format is to reduce the in-class time to 2hrs. This duration allows me to schedule it in the evening of my time-zone and by that opening it for some other time-zones.

Compared to full or half days, the short duration per unit allows you to join easily. From an educational perspective, multiple short sessions over a longer period allow participants to familiarize themselves better with the material and come back with questions. A usual three full-day class is more exhausting for the participants.

Your choice: Book only what you need

Another unique element is that you can pick which of the five offered topics you like to learn something about, or of course, join for all of them. This gives you the entire freedom to spend time only on the topics that are beneficial for you. Of course, you pay only for the topics you book, so in addition to saving time, you save money as well. Aside from all the general savings, this gives you the freedom to book this course even knowing that you cannot attend, for example, one or two topics. There is no need to pay for it if you know up-front that you cannot make it on two topics.

I picked C++20 as the topic because I see a lot of interest in the community. The short session helps you to get up to speed quickly.

The price

For this course, I tried to come up with a price that should allow you to purchase at least one unit yourself instead of your company paying. The reason behind this is that because C++20 very new, my prediction is that it will take some time until we see it in production wildly. However, just because your company does not yet use it shouldn't prevent you from educating yourself and maybe prepare for a C++20 rich future. I still struggle with the price because it is still too high for various countries in this world. The currently strong EURO contributes to that. I wish for a world with way fewer differences, not just for selling courses.

Book your seat

You can book your seat here: andreasfertig.com/courses/cpp20-five-features-in-five-weeks. The sale for all topics ends on March 23!

The schedule

Below you find the schedule, including the dates of each topic.

March 30: Concepts

You learn how Concepts work and how to create your own Concept. Your learning continues with a look at a new form of writing function templates: abbreviated function templates. In the end, you learn how Concepts improve error messages.

April 6: Coroutines

You learn to rethink how function calls work and how regular functions compare to Coroutines. After that, you familiarize yourself with the low-level Coroutine API C++20 offers. You then learn how to use that knowledge to build a byte-stream parser using a Coroutine.

April 13: Ranges

In this workshop, you will learn how refactoring C++17 code becomes clearer by applying C++20's Ranges. You will also learn about the improvements Ranges give you, like unintentional use of a temporary which is no longer valid.

April 20: spaceship-operator

This workshop is all about comparisons. It starts with a recap of what you had to do before C++20, followed by how your code now boils down to just a few lines of code using the spaceship-operator and a new compiler ability call operator-rewrites. You will then learn about some situations where upgrading C++17 code could lead to unexpected issues.

April 27: constexpr

The evolution of constexpr continues in C++20. You will learn the new application areas for constexpr, like allocating memory with new and delete in a constexpr-function. But this isn't it. You then will learn about two new members of the constexpr-world: constinit and consteval. In the end, you will be able to set all three in a complete picture knowing which one of them to use when best.