Multi-Paradigm Programming with Modern C++

Video description

C++ is a multi-paradigm language that lets you solve a problem in different ways, and this course will teach you the best practices.

Furthermore, C++ has been re-invented again. C++2a is the largest extension to the language since C++11, and it almost feels like a new language. Developers who master the new features will be able to write cleaner, faster and concurrent code. In this course, you will learn about the best practices of C++ programming, including project structure, designing interfaces and classes, C++ Core Guidelines, and the most recent language standard. The new features are numerous and cover almost every area of the language: modules let us organize our programs better; concepts help us create cleaner APIs; ranges forever change how we look at containers; concurrency features, such as coroutines, bring parallel and concurrent programming to a whole new level.

You will get plenty of practical experience with short, real-world code examples. By the end of this course, you will be ready to create better software using C++.

What You Will Learn

  • Take your C++ skills to the next level
  • Learn different programming styles
  • Get hands-on experience with useful design patterns
  • Know the little details that make great C++ programs
  • Write safe and performant concurrent code
  • Understand some of the most important C++ Core Guidelines
  • Be among the first to learn and use modules, concepts, ranges, and coroutines


If you are a C++ developer and want to upskill your C++ development skills, this is the course you. Working knowledge of C++, including selected features of C++11 (e. g. lambdas), is required. Knowledge of C++17 is not necessary, but it will make understanding of some aspects easier.

About The Author

Georgy Pashkov: Georgy Pashkov is a passionate software developer and team leader. The author has been successfully programming with C++ for over 10 years.

Throughout his career, Georgy has worked on many projects developed using C++, mainly in the supply chain industry. His experience covers desktop, server, and mobile applications for multiple platforms. He is passionate about creating high quality, reliable software.

Georgy was raised in Karelia, Russia. He earned his specialist degree in CS at Petrozavodsk State University and moved to Belgium shortly after graduation. With many years of experience in software development, he decided to share some of his skills.

Table of contents

  1. Chapter 1 : Introduction to C++
    1. The Course Overview
    2. On Programming Paradigms
    3. A Brief History with C++
    4. On Development Tools
  2. Chapter 2 : Structuring Projects in C++
    1. Structure of C++ Projects
    2. Organizing Source Files
    3. Improving Compilation Speed
    4. Pimpl Idiom
    5. Modules in C++ 2a
    6. Structuring Modules
  3. Chapter 3 : Creating Better Interfaces
    1. What Makes a Good Interface
    2. Providing a Good Abstraction
    3. Passing Things Around
    4. Enforcing the Contract
    5. Interface with Style
    6. Application Binary Interface
  4. Chapter 4 : Going Object-Oriented
    1. Class and Structs
    2. Constructors and Destructors
    3. Copy and Move
    4. Designing Class Hierarchies
    5. Dual Hierarchy Example
    6. Managing Memory
    7. Shared Pointer
  5. Chapter 5 : From Functions to
    1. Chapter 6 : Writing Generic Code with Templates
      1. When to Use Templates
      2. Instantiating the Template
      3. Specializing the Template
      4. Entering Concepts
      5. Diving into Concepts
    2. Chapter 7 : Working with Collections
      1. In Search of a Perfect Container
      2. Searching and Sorting
      3. Manipulating Data
      4. Enter Ranges
      5. Dive into Ranges
      6. More Range Examples
    3. Chapter 8 : Concurrent Data Access
      1. Data Access Modes
      2. Synchronization with Atomics
      3. Synchronization with Mutexes
      4. Synchronization with Condition Variables
      5. Parallel STL
    4. Chapter 9 : Task-Level Parallelism
      1. Thread Pools
      2. Promise and Future
      3. Running Asynchronous Tasks
      4. Task Continuation
      5. Grouping Tasks with Fork/Join
      6. Distributing the Work
    5. Chapter 10 : Introduction to Coroutines
      1. What Is a Coroutine?
      2. Coroutine Mechanics
      3. Coroutine Machinery
      4. Writing Our First Coroutine
      5. Resuming the Coroutine
    6. Chapter 11 : Dive Deeper into Coroutines
      1. Coroutines on a Thread Pool
      2. Scheduling a Coroutine
      3. Returning Values
      4. Adding Syntactic Sugar
      5. Implementing Continuations
      6. Putting It All Together
    7. Chapter 12 : C++ Core Guidelines
      1. About the Guidelines
      2. Enforcing the Guidelines
      3. General Guidelines

Product information

  • Title: Multi-Paradigm Programming with Modern C++
  • Author(s): Georgy Pashkov
  • Release date: June 2020
  • Publisher(s): Packt Publishing
  • ISBN: 9781839212864