
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Explore core data operations in C++, performing add, subtract, and divide on variables, and learn how to format output with std::cout using utilities from the C++ standard library.
Explore basic operations in c++20: addition, subtraction, multiplication, division, and modulus on integers. Practice with a template project in Visual Studio Code to print results.
Explore precedence and associativity in C++ expressions, including left-to-right and right-to-left rules, shown with multiplication, division, addition, and subtraction; use parentheses to clarify intent.
Explore prefix and postfix increment and decrement operators in C++: learn how postfix prints the current value before incrementing, while prefix updates the value before use.
Learn compound assignment operators in c++ by applying +=, -=, *=, /=, and %= to update a value and observe outputs such as 50, 45, 90, 30, and 8.
Learn how C++ relational operators compare integers using <, <=, >, >=, ==, and !=, print booleans, and handle precedence with parentheses in GCC and Visual Studio Code.
Explore logical operators in C++ including and, or, and not, with boolean operands, truth tables, and operator precedence; practice using cout to display true or false and combining relational operators.
Explore output formatting in C++ using iostream and iomanip to format tables, control width and fill, and apply booleans, bases, and floating-point styles with manipulators like std::endl and std::flush.
Explore the numeric limits library to determine the minimum, maximum, and lowest values for floating point and integral types across short, unsigned short, int, and long.
Discover how to use the C math library (cmath) functions such as std::floor, std::ceil, std::abs, trig functions, exp, log, pow, sqrt, and std::round to perform math operations in C++.
Explore how weird integral types behave: sub-four-byte types cannot perform arithmetic, and the compiler promotes them to int during calculations, with sizes shown for short and char.
Explore arithmetic operations, modulus, precedence, and associativity, then prefix and postfix increments, and compound assignments. Examine output formatting with stdcout, numeric limits, math functions, and integral type size constraints.
Explore literals, data stored directly in memory, and master the keywords const, constexpr, and constant, including how compile-time and runtime evaluation work.
Explore how literals are burned into the program binary, how prefixes and suffixes specify literal types, and how to safely initialize unsigned, long, hexadecimal, octal, and binary values.
Discover how const in C++ protects the variable name from modification after initialization, triggering compiler errors for reassignment. Apply const across types and computations to guarantee read-only values.
Learn how constant expressions are evaluated at compile time using constexpr, move heavy computations to compile time, and validate with static_assert to ensure compile-time constraints.
Explore the constant keyword introduced in C++20 and its compile-time initialization for static or thread storage duration. Learn how it differs from const and constexpr.
Explore literals and constants in C++, learn how prefixes and suffixes clarify types, and compare constexpr, constant, and static_assert for compile-time checks.
Explore implicit conversions, overflow and underflow in C++20, and how expressions handle mixed data types. Learn how common types are chosen and how explicit conversions influence results.
Examine how the compiler applies implicit data conversions when mixing int and double, promoting smaller types to larger ones, and how assignment can cause narrowing from right to left.
Explore explicit data conversions, using static_cast to convert between types, compare with old-style C casts, and see when to override implicit conversions in C++.
Explore how overflow and underflow occur with unsigned 8-bit values from 0 to 255, like 130 plus 131 wrapping to 61, and how static_cast helps display the results.
Explore data conversions across variable types in expressions, understand implicit and explicit conversions with static casts, recognize overflow and underflow, and anticipate bitwise operators.
Explore bitwise operators that manipulate integer bits, perform shifts and masks, and logical operations in C++. Learn to print binary representations to visualize bit movement for low-level hardware tasks.
Print integers in binary using the standard library bitset, including its header, and demonstrate 16 bits of unsigned data displayed in binary with cout and show base.
Learn how shift operators move bits left or right, pad with zeros, and permanently lose bits, so reverse shifts cannot recover data; apply explicit casts and bitset printing in C++.
Learn how bitwise logical operators work on bits, including and, or, not, and xor, with practical C++ examples using unsigned chars and std::bitset.
Explore compound bitwise assignment operators in C++ that update a variable in place, including left and right shifts, or, and, xor, with hands-on GCC examples.
Explore how masks highlight or shadow bits within a byte, using bitwise operations (or, and, not, xor) to set, reset, toggle, and check individual or multiple bits in C++.
Use masks to pass options with an unsigned char, replacing eight boolean parameters with bit fields. Apply bitwise checks to read bits and see how the technique appears in OpenGL.
Demonstrate packing color information into a four-byte int using masks and shifts to store red, green, blue, and alpha components, then print values in hex or decimal.
Explore bitwise operators in C++20, shift bits left or right, apply and, or, not, and compound assignments, use masks to set, reset, check, and toggle bits, with real-life examples.
Understand variable lifetime in the C++20 masterclass by examining storage duration: local, static, and dynamic, and when each variable dies.
Explore variable scope in the C++20 masterclass, distinguishing global and local variables, nested scopes, and compiler errors when using names outside their scope.
Explore conditional programming in C++ by applying boolean conditions to guide program flow, using if, else, switch, and the ternary operator.
Master conditional programming with if statements in C++, using booleans, else clauses, negation, and nested conditions, and apply logical operators in practical examples.
Demonstrate using the else if clause to test multiple conditions in an if statement, selecting the current tool (pen, marker, eraser) and executing the corresponding block.
Explore how the switch statement in C++ replaces lengthy if-else chains, using cases, breaks, and a default to test tools like pen, marker, eraser, and shapes.
Master short circuit evaluations in C++ by observing how and/or expressions stop early to save expensive computations, using car, house, job, and spouse as demonstrations.
Explore how integers act as conditions in if statements, where nonzero values become true and zero becomes false, with implicit conversions and explicit boolean casts for clarity.
Learn how to use ternary operators as a compact alternative to if statements, select max between A and B, and understand type compatibility and one-liner initializations.
Learn how if constexpr enables compile-time conditioning in modern C++, using constexpr booleans to eliminate branches at compile time and reduce runtime work and binary size.
Learn how if with initializer confines speed to the if block, avoiding outer scope pollution, and enables using speed in if and else blocks.
Learn how to use a switch with initializer in C++20 by declaring a variable in the switch, accessible to all cases, and displaying its value with the selected tool.
Explore scope in c++ if statements and else blocks, and how global variables stay accessible. Learn that inside-block variables like car count are not visible outside.
Explore switch scope analysis, showing a switch block is one scope where variables declared in any case are visible across cases. Use curly braces and proper initialization to avoid errors.
Explore flow control in C++ through if statements, else clauses, else if chains, switch, and the ternary operator to make concise decisions; prepare for loops in the next chapter.
Welcome to the C++ 23 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 NodeJS, PHP, Java, JavaScript and many more are written in.
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++23
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, C++20 and C++ 23, 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++ 23 as our base standard.