We may earn an affiliate commission when you visit our partners.
Daniel Gakwaya

Welcome to the C++ 20 Masterclass. A course designed to teach you cutting edge modern C++ from the absolute beginning all the way to very advanced topics, the topics you need in areas where C++ is used massively in modern times. Want to be a confident game developer? High performance applications in the financial sector, how about powerful software modules on top of which server systems, network infrastructure, database systems, even operating systems themselves run on top of? Well C++ is the dominant language used in these areas and many more. C++ is the programming language even other programming languages and technologies like Node

Read more

Welcome to the C++ 20 Masterclass. A course designed to teach you cutting edge modern C++ from the absolute beginning all the way to very advanced topics, the topics you need in areas where C++ is used massively in modern times. Want to be a confident game developer? High performance applications in the financial sector, how about powerful software modules on top of which server systems, network infrastructure, database systems, even operating systems themselves run on top of? Well C++ is the dominant language used in these areas and many more. C++ is the programming language even other programming languages and technologies like Node

By learning modern C++, you will be setting yourself up for success in writing software that runs devices ranging from bare metal embedded devices,  to mainstream electronic tech products like fridges, toasters, to networking infrastructure like routers and switches, all the way to power plants, manufacturing facilities and medical equipment. C++ is simply everywhere.

This course was carefully designed in a way  that it  will make you ready to take on technologies  and industries where C++ is widely used, by teaching you Modern C++ the way it is used in industry, and you will learn and master how to use shiny new features from the latest C++ standard (C++20) like ranges, modules coroutines, concepts, the three way comparison infrastructure and many more features spread out through out chapters and lectures in the course.

This course will teach you modern C++ from the absolute beginning all the way to a point where you can use advanced features like function templates, class templates, polymorphism, move semantics, functors , callbacks, STL container, iterators and algorithms, I will even show you how to build iterators for your own collection types, giving you the tools to  plug into the infrastructure provided by the C++ standard library to tune it to your own needs. Here are some of the things you'll get to master through this course : 

  • C++20

  • C++17

  • C++14

  • C++11

  • C++98

  • Ranges

  • Modules

  • Concepts

  • Coroutines

  • Classes

  • Variables and data types

  • Functions

  • Inheritance

  • Polymorphism

  • Const correctness

  • Static variables

  • Storage duration

  • Linkage

  • One Definition rule

  • Operator Overloading

  • Three way comparison infrastructure

  • Function like entities

  • Move semantics

  • STL containers, iterators and algorithms

  • And much more.

By the time you're done with the course, you will be ready to use modern C++ with standards C++ 11,C++14, C++17 and C++ 20,  but you will also have the tools necessary to read, understand and work with older C++ code bases with C++98 and below out there, making your  C++ skills valuable across a wide range of areas regardless of the C++ standard in use.

The course was designed with complete beginners in mind. So if you have never programmed a computer before, don't worry, I will be with you every step of the way, showing you around, teaching you the tools, constructs and mechanisms necessary to build real C++ projects.

Existing C++ developers or experienced developers from other programming languages will also get a lot of value from the course as we cover advanced topics not covered in other online courses and books as far as I can tell. These include things like building  your own iterators, callback functions and many more.

Now C++ is a very powerful language used by big companies like Microsoft, Apple, Google, NASA, and many more across a wide range  of products and I can talk about it all day. I am privileged to have been using it in my daily work for the last decade and I am  excited to share my accumulated knowledge with you in this course.

If you are serious about learning and mastering cutting edge modern C++, then this course is designed with the skill, the patience and the depth needed to get there as efficiently as possible. Please check some of the preview lectures, and lets get you started with modern C++ development, using C++ 20 as our base standard.

Enroll now

What's inside

Learning objectives

  • C++ 20
  • Ranges
  • Concepts
  • Modules
  • Coroutines
  • C++ 17
  • C++ 14
  • C++ 11
  • C++98
  • Operator overlading
  • Classes
  • Variables and data types
  • Inheritance
  • Polymorphism
  • Const correctness
  • Static variables
  • Class templates
  • Exceptions
  • Move semantics
  • Stl containers, iterators and algorithms
  • Function like entities and callbacks
  • Lambda expressions
  • Character manipulation and strings
  • Return value optimization
  • And much more!
  • Show more
  • Show less

Syllabus

Welcome
Windows setup introduction
Getting the most out of the course
Source code, Slides and Questions [IMPORTANT]
Read more
Environment Setup - [Windows - Linux - Mac]
The Tools
Environment setup - Windows
Install and setup VS Code on Windows
Microsoft Visual Studio Install - Windows
VS Code setup with MSVC
Install GCC & Clang - Windows
Configure VS Code for GCC - Windows
Configure VS Code for Clang - Windows
Windows template project - All compilers
Windows Development Environment setup - Summary
Environment setup - Linux
Linux environment setup - Introduction
Install & setup VS Code on Linux
Install GCC on Linux
Configure VS Code for GCC - Linux
Install Clang on Linux
Configure VS Code for Clang - Linux
Template Project - All compilers - Linux
Environment setup - Mac
Introduction
Install and Setup Visual Studio Code
Install GCC and Clang
Configure VS Code for gcc
Configure VS Code for Clang
Template Project - All compilers
Environmet setup - Other options
Online Compilers
About other IDEs
So you think you know more about C++, let's find out!
Diving In
Project Template
Your First C++ Program
Comments
Errors
Statements and Functions
Data input and output
Data Output
C++ Program Execution Model
C++ core language Vs Standard library Vs STL
Program Structure
The program wants to know where you live
Summary
Variables and Data Types
Number Systems
Decimals and Integers
Integer Modifiers
Fractional Numbers
Declare and initialize variables
Booleans
Characters And Text
Auto
So you think you know more about C++. Let's find out
Assignments
Data Representation in memory
Number systems
Let's see how you'd use your data types
Operations on Data
Basic Operations
Precedence and Associativity
Prefix/Postfix Increment & Decrement
Compound Assignment Operators
RelationalOperators
Logical Operators
Output formatting
Numeric Limits
Math Functions
Area of a hexagon
Weird Integral Types
Celcius to Fahrenheit
Area and Volume of a Box
Literals and Constants
Literals
Constants
Constant Expressions
constinit
So you think you know more about C++? Let's find out!
Data Conversions : Overflow & Underflow
Implicit Data Conversions
Explicit Data Conversions
Overflow and Underflow
So you think you know a bit more about C++? Let's find out!
Bitwise Operators
Printing Integers in Binary
Shift Operators

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Covers C++20, which is essential for modern software development in fields like game development and finance, where performance is critical
Designed with complete beginners in mind, providing a step-by-step introduction to C++ programming concepts and constructs
Offers value to experienced developers by covering advanced C++ topics not typically found in other online courses and books
Provides the tools necessary to read, understand, and work with older C++ codebases using C++98 and earlier standards
Explores shiny new features from the latest C++ standard (C++20) like ranges, modules, coroutines, and concepts
Covers C++ standards from C++98 to C++20, but focuses on C++20 as the base standard, which may require learners to adapt to older code

Save this course

Save The C++20 Masterclass : From Fundamentals to Advanced to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in The C++20 Masterclass : From Fundamentals to Advanced with these activities:
Review C++ Fundamentals
Solidify your understanding of C++ fundamentals before diving into advanced topics. This will make grasping C++20 features easier.
Show steps
  • Review basic syntax and data types.
  • Practice writing simple programs.
  • Study control flow statements.
Review 'Effective Modern C++'
Deepen your understanding of modern C++ idioms and best practices. This book complements the course material and provides practical advice.
Show steps
  • Read selected chapters relevant to the course topics.
  • Experiment with the code examples provided.
  • Reflect on how the advice applies to your projects.
Implement STL Algorithms
Master the use of STL containers, iterators, and algorithms through practice. This will improve your ability to write efficient and maintainable C++ code.
Show steps
  • Choose a set of STL algorithms to implement.
  • Write test cases to verify the correctness of your implementations.
  • Compare your implementations with the standard library versions.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Build a Simple Game Engine
Apply your C++ knowledge to a real-world project. Building a game engine will solidify your understanding of classes, inheritance, polymorphism, and other advanced concepts.
Show steps
  • Design the architecture of your game engine.
  • Implement core components such as rendering and input handling.
  • Add features such as physics and AI.
  • Test and debug your game engine.
Write a Blog Post on C++20 Modules
Solidify your understanding of C++20 modules by explaining them to others. Writing a blog post will force you to think critically about the topic.
Show steps
  • Research C++20 modules thoroughly.
  • Write a clear and concise explanation of modules.
  • Provide code examples to illustrate the use of modules.
  • Publish your blog post online.
Review 'C++ Concurrency in Action'
Expand your knowledge of concurrent programming in C++. This book provides a detailed explanation of the C++ concurrency API.
Show steps
  • Read selected chapters relevant to concurrency.
  • Experiment with the code examples provided.
  • Apply the concepts to your projects.
Contribute to a C++ Open Source Project
Gain practical experience by contributing to a C++ open source project. This will expose you to real-world C++ code and development practices.
Show steps
  • Find a C++ open source project that interests you.
  • Read the project's documentation and contribution guidelines.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete The C++20 Masterclass : From Fundamentals to Advanced will develop knowledge and skills that may be useful to these careers:
Game Programmer
A game programmer writes code that brings video games to life, and this course helps to build a foundation in the language that is often used in game development, C++. The course covers core language features such as classes, polymorphism, and templates, which are essential for structuring game logic and optimizing performance. The curriculum exposes learners to advanced topics like move semantics and the Standard Template Library, enabling the creation of efficient and robust game systems. Further, experience with C++ standards, including C++ 20, helps build a foundation in the language of modern game design. By learning modern C++ as presented in this course, one who wishes to become a game programmer can build the required skills to work in the industry.
Embedded Systems Engineer
An embedded systems engineer designs and develops software that runs on physical devices, such as those found in cars, appliances, and industrial machinery. This course directly helps one who wishes to become an embedded systems engineer, as C++ is often used to program embedded systems. The course covers low-level memory management and performance optimization techniques, crucial for creating embedded software that is efficient and reliable. Furthermore, it teaches modern C++ standards such as C++20, which provides important features to help developers manage embedded systems. The course goes into sufficient depth, including teaching how to use the STL, to help the student move into this field with confidence.
High Performance Computing Developer
A high performance computing developer creates software that pushes the limits of computational speed and efficiency. This course helps to build a foundation in C++, a critical language in the high performance computing field. The course's detailed exploration of memory management, move semantics, and template metaprogramming is directly aligned with the performance critical nature of this job. The coverage of modern C++ standards, including C++20 features, empowers you to build cutting edge applications that push the boundaries of what is possible. High performance computing developers will find significant value in this course, providing them with needed skills.
Financial Software Developer
A financial software developer creates tools used in trading platforms, risk management systems, and other financial applications. This course helps build the skills necessary to become a financial software developer by providing a thorough background in C++, a language used in this field. The course features a wealth of information on performance optimization such as move semantics and techniques in using the standard template library to implement complex financial models and algorithms. This course may be useful due to the coverage of modern C++ standards, including C++20, allowing a financial software developer to create cutting edge systems.
Operating Systems Developer
An operating systems developer is responsible for creating the foundational software that manages computer hardware and software resources. This course may be useful for a student interested in operating systems development, as a deep understanding of C++ is essential in this role. The course covers low level memory management and offers information about system level programming with C++ and relevant modern C++ standards such as C++ 20. By covering both fundamental and advanced topics, this course provides the necessary training which can be applied to operating systems development.
Database Systems Developer
A database systems developer designs and implements the software that powers data storage and retrieval, and this course may be useful for those who wish to work in this area. The course teaches C++, a key language for building high performance database systems. This course covers vital topics like memory management, performance optimization, and the Standard Template Library, which can be used to implement data structures and algorithms. Furthermore, the course teaches modern C++ standards such as C++20, ensuring that the learner can work with database technologies.
Compiler Developer
A compiler developer works on software that translates human readable code into machine code, and this course may be useful for gaining the skills for such a position. It provides a comprehensive understanding of C++, and compiler developers often use C++ to implement compilers. The course covers object oriented concepts, templates, and memory management, which are essential for this role. This course provides a strong base in core language features as well as modern standards such as C++20. By taking this course, one may be more effective as a compiler developer.
Network Infrastructure Engineer
A network infrastructure engineer designs and maintains the hardware and software that enables network communication, and this course may be useful for those who wish to work in this field. This course helps build a foundation in C++, a language often used in the development of network protocols and tools. The course teaches low level programming with C++, which is useful for networking and optimizing performance critical systems. Further, modern C++ standards such as C++ 20, are essential for building modern networking infrastructure. The course can give an aspiring network infrastructure engineer a head start in this field.
Robotics Software Engineer
A robotics software engineer is responsible for creating the software that controls the behavior of robots, and this course can help with skills needed for this role. The course presents a comprehensive overview of C++, a language often used in robotics. It covers essential topics such as object oriented programming, memory management, and how to use the standard template library. This course may be useful due to the coverage of the latest C++ standards, including C++ 20. The knowledge and skills from this course can be directly applied to develop robotics systems.
Quantitative Analyst
A quantitative analyst develops mathematical and statistical models for financial markets, and this course may be useful for those who wish to work in this field. C++ is frequently used for implementing complex financial models due to its ability to handle high performance computation. The course's broad coverage, including modern C++ standards, may be helpful for numerical analysis and algorithmic trading. Although the role requires a strong background in math, one who aspires to work in quantitative finance may find this course useful.
Software Engineer
A software engineer designs develops and maintains software applications, and this course may be useful for those who wish to work in this field. The language C++ is widely used in software engineering, and this course provides a strong background in both core C++ concepts and modern C++ standards. It teaches advanced topics such as template programming, memory management, and the standard template library. This course provides a strong foundation in C++, which is frequently used in software engineering, and may be helpful for many areas of software development.
Data Scientist
A data scientist analyzes large datasets to extract meaningful insights and create data driven solutions. This course may be useful in this field, as C++ is used for high performance computing tasks often associated with data science. The course introduces many of the underlying concepts of computation using C++, which can be beneficial in developing efficient and effective data analysis tools. This course may be helpful to a data scientist who works with large datasets or who wishes to optimize their code.
Machine Learning Engineer
A machine learning engineer designs and implements machine learning models and systems, and this course may be useful in this field. Although Python is often associated with machine learning, C++ is used to optimize the performance of these models for deployment. The course introduces core concepts of programming with C++, such as memory management, as well as modern C++ standards. This course may be useful for a machine learning engineer who wants to improve the efficiency of their models and deploy to production.
Computer Graphics Programmer
A computer graphics programmer develops the software that creates visual effects and renders images, and this course may be useful for those who wish to work in this field. C++ is used often in computer graphics software development due to its performance capabilities. The course introduces essential concepts such as classes, polymorphism, and STL containers. Those who wish to become a graphic programmer may find this course useful to build the core technical skills necessary for this field.
Algorithm Developer
An algorithm developer creates efficient algorithms for solving complex problems, and this course may be useful for those who wish to enter this field. The course teaches core C++ concepts, including data structures and algorithms, which provides a strong foundation for algorithm development. It also explores advanced topics including move semantics, templates, and the Standard Template Library. This course may be beneficial for building skills necessary for algorithm development, as a deep understanding of C++ allows one to efficiently implement complex algorithms.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in The C++20 Masterclass : From Fundamentals to Advanced.
Provides in-depth explanations of modern C++ features, including those covered in the course. It serves as an excellent reference for understanding the nuances of C++11, C++14, C++17, and C++20. It is commonly used by industry professionals. It is more valuable as additional reading than it is as a current reference.
Provides a comprehensive guide to concurrent programming in C++. It covers topics such as threads, mutexes, condition variables, and atomic operations. It is useful for understanding how to write efficient and safe multithreaded C++ applications. It is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser