My Courses

I love to teach people and to improve their skills in the area of Modernes C++
Do you want to learn more about me? Here´s how to get started:

Modern C++ Concurrency in Practice

In addition to explaining the details of concurrency in modern C++, this course gives you many interactive code examples; therefore, you can combine theory with practice to get the most out of it.

“Concurrency with Modern C++” is a journey through the present and upcoming concurrency features in C++.

  • C++11 and C++14 have the basic building blocks for creating concurrent and parallel programs.
  • With C++17 we have the parallel algorithms from the Standard Template Library (STL). That means that most STL based algorithms can be executed sequentially, parallel, or vectorized.
  • The concurrency story in C++ goes on. With C++20 we can hope for extended futures, co-routines, transactions, and more.

Apart from theory, this course contains a lot of real-world scenarios and use-cases along with pitfalls and how to overcome them using best practices.

Here is more information: Concurrency with Modern C++

C++ Standard Library including C++14 & C++17

C++ is one of the most prominent programming languages in the world. Along with optimized performance, the diverse functionality it offers has kept the language relevant for two decades.

The C++ Standard Library, which is the collection of all the tools and utilities available in C++, received its latest update in 2017. Known as C++17, the update introduces many new features that further optimize our code.

Join us in this course as we venture into the vast world of C++17. We’ll examine the fundamentals of the language, before moving on to more complex yet powerful tools. You can also experiment with the code provided and hence, gain a higher understanding of how things work. This course is perfect for anyone willing to fully grasp C++ and use it to its full potential. Welcome aboard!

Here is more information: C++ Standard Library including C++14 & C++17

Embedded Programming with Modern C++

The scope of this course goes beyond just embedded programming. Developers who write servers, games, or trading systems may especially benefit from this course.

Because they also have to deal with safety-critical systems, high performance, reduced resources, and parallel execution in their jobs. Embedded Programming with Modern C++ is highly valuable for each professional programmer.

In the past, embedded and system programming have had their pitfalls, but modern C++ has been designed to be a better language for this type of development, addressing the previous pitfalls/requirements explicitly. What are these requirements? Embedded systems deal with safety-critical systems, meaning they must guarantee high performance combined with limited resources, while also working in parallel.

To get the most out of the course, you only need a basic understanding of C++. Building off this understanding, this course goes over all the essentials of embedded programming with Modern C++.

Here is more information: Embedded Programming with Modern C++

Generic Programming (Templates) in C++

Templates are one of the many powerful features of Modern C++ programming. And with each new C++ standard, they become more important.

Templates provide an efficient way to make your code more flexible and reusable, this way you can avoid repeating code that would otherwise be identical except for different types. Templates also give you the ability to provide abstraction without a performance penalty.

However, templates can be difficult to apply, can be counterintuitive, and have tricky error messages.

This course gives you the necessary information to overcome these hurdles and dive into the advanced topics. You’ll visit the basics such as function and class templates, and then explore the details to templates such as instantiation and fold expressions. Our journey also includes techniques based on templates, the design, and future directions of templates such as concepts. Based on this exhaustive tour of templates, a basic understanding of C++ is sufficient to master this course.

Here is more information: Generic Programming (Templates) with C++

C++ Fundamentals for Professionals

C++ is a common first choice for software developers when optimal performance and high safety are necessary. Learning the rich core language and the many libraries, however, can be a neverending story.

This course has one goal: ending that story. This course is a combination of new material and material pulled from my other C++ courses, giving you all the most crucial information in one place. You will learn the necessary information you need to be a professional C++ programmer, including the current C++17 standard. You’ll explore memory management, inheritance, templates, vectors, threads, tasks, and much more. Once you’re done, you’ll have all the necessary skills to take advantage of the potential of C++ in your day-to-day work.

Here is more information: C++ Fundamentals for Professionals

The All-in-One Guide to C++20

This course is your complete guide to the latest version of C++: C++20. You will run through the flagship features of C++20 but also every minor addition to C++.

Initially, you will learn the details of the new standard and most notably, you will focus on the big four: concepts, modules, range library, and coroutines.

You will also cover the additions to the standard library and concurrency in detail. To get the information to sink in, each chapter includes tons of example code for you to get a vivid idea about what to expect from each feature. Lastly, you will get into some case studies to apply the theory into practice.

Here is more information: The All-in-One Guide to C++20

Master Software Design Patterns and Architecture in C++

Software engineering researchers and practitioners noticed that parts of software projects could often be solved using approaches that were discovered earlier to solve similar problems.

This led to the documentation of software design and architectural patterns, which are known solution approaches to a class of problems.

This course starts by putting software patterns into perspective by answering the question, “What is a software pattern, and how is it different from an algorithm?” You will then learn about the two classes of patterns—software design and architecture patterns. Next, you’ll learn common C++ idioms. Finally, you will learn about software patterns for concurrency.

By the end of the course, you will have useful and practical tools to improve the quality of your code and productivity. You’ll also be able to analyze a given part of your software project, pick the right pattern for the job, and apply it.

Here is more information: Master Software Design Patterns and Architecture in C++