COURSE SUMMARY
The way professional engineers write C++.
Most C++ courses teach you the syntax. This one teaches you how production engineers actually write it.
Whether you're starting from scratch, preparing for technical interviews, or upgrading from older versions of C++, this course will teach you to write Modern C++ the way experienced software engineers do. If you've struggled to understand real-world C++ codebases or feel your knowledge is stuck in pre-C++11 practices, you'll find the structured guidance you need here.
Unlike most C++ courses, you'll learn not only what Modern C++ features do, but why they were introduced, when to use them, and how experienced developers apply them in real projects.
Created by Sanjeevan D'Souza, a corporate trainer and systems programmer with over 20 years of professional experience training software engineers at companies across the industry, this is the complete, structured path from C++ fundamentals through C++23 — explained the way experienced developers actually think about it.
Why learn from me?
Unlike instructors who primarily teach through recorded tutorials, I've spent over two decades training professional software engineers in corporate environments. I've seen where developers struggle, the misconceptions they develop, and the techniques that consistently help them master Modern C++. That experience has shaped every lesson in this course.
Why this course is different
- Corporate training quality, consumer price. The same teaching methodology used to train professional software engineers in corporate environments — refined over 20 years — now available to individual learners.
- The full modern stack in one path. C++11, C++14, C++17, C++20, and C++23 — one structured course, no jumping between resources.
- Explains the why, not just the what. Every feature is taught in context: when to use it, why it was designed that way, and how professionals apply it in real codebases.
What you'll be able to do by the end
- Build complete, production-quality C++ applications from scratch with confidence.
- Read and contribute to real-world C++ codebases, including those using C++17, C++20, and C++23 features.
- Write clean, maintainable code using smart pointers, RAII, and modern resource management.
- Use the STL fluently to write shorter, faster, more expressive code.
- Design reusable, type-safe solutions with templates and generic programming.
- Build high-performance multithreaded applications using futures, async programming, and proper synchronization.
- Work confidently with modern C++ libraries: Filesystem, Regex, Chrono, Random, and more.
- Develop the depth of understanding needed to confidently tackle Modern C++ technical interviews.
Is this course right for you?
This course is a strong fit if you are:
- A complete beginner taking your first steps into programming and wanting to start with an industry-grade language.
- A student studying computer science, software engineering, or embedded systems.
- A developer from C, Java, C#, Python, or another language who wants to learn how professionals write Modern C++.
- A C++ developer who learned pre-C++11 and knows your skills need an upgrade.
- An embedded systems or hardware engineer adopting modern development techniques.
- A professional preparing for technical interviews that test C++ depth.
- Someone targeting systems programming, game development, robotics, AI engineering, high-performance computing, or cross-platform software roles.
Course at a glance
- Covers C++11, C++14, C++17, C++20, and C++23 in one complete path.
- Hundreds of practical coding demonstrations and real-world examples.
- Works on Windows, Linux, and macOS, with standard C++ compatible with MSVC, GCC, and Clang.
- Regularly updated as new C++ standards are released.
- Industry-standard tooling: Visual Studio 2026 / MSVC, with GCC/Clang alternatives shown.
By the end of the course, you'll be able to read modern C++ code with confidence, understand why experienced developers write it the way they do, and apply the same techniques in your own projects.
Whether you're building your first C++ application or modernizing years of experience, this course will give you the knowledge, confidence, and practical skills to write Modern C++ the way professional software engineers do.
LESSON-BY-LESSON OUTLINE
Course contents
Explore the course modules and lesson outline, from C++ fundamentals through modern language features, libraries and concurrency.
Procedural Programming in C++91 lessons
- Welcome to this module - Procedural Programming in C++
- First C++ Program in Visual Studio
- First C++ Program - Demo
- Primitive Datatype in C++
- Primitive Datatypes in C++ - Code Demo
- Literals in C++
- Literals in C++ - Code
- Constants and References
- Constants and References - Code
- Type Casting, Aliasing and Inference - Introduction
- Type Casting in C++
- Type Casting in C++ - Code
- Type Alias in C++
- Type Alias in C++ - Code
- Type Inference in C++
- Type Inference - Code
- Initalizing in C++
- Initialization in C++ - Code
- Arithmetic Operators in C++
- Arithmetic Operators in C++ - Code
- Relational and Logical Operators in C++
- Relational and Logical Operators in C++ - Code
- Bitwise Operators and the bitset class in C++
- Bitwise Operators and the bitset class in C++ - Code
- Compound Assignment Operators in C++
- Compound Assignment Operators in C++ - Code
- Ternary and sizeof Operator in C++
- Ternary and sizeof Operator in C++ - Code
- Console I/O Operations in C++
- Console I/O Operations in C++ - Code
- Using the Debugger in Visual Studio
- If, if-else, if-else-if and switch in C++
- Conditional Statements In C++ - Code Demo
- Loops in C++
- Loops in C++ - Code Demo
- Control Flow Interruptions - break, continue, goto, exit() and return
- Control Flow Interruptions - Code Demo
- Intializers in Control Statements
- Why Functions?
- Functions in C++
- Functions in C++ - Code Demo
- What Happens When A Function Is Called?
- Passing Data To Functions
- Passing Data To Functions - Code Demo
- Function Overloading
- Function Overloading - Code Demo
- Inline & Recursive Functions
- Inline & Recursive Functions - Code Demo
- Data In Memory
- Storage Classes in C++
- Storage Classes in C++ - Code Demo
- One Dimensional Arrays in C++
- One Dimensional Arrays in C++ - Code Demo
- Two Dimensional Arrays in C++
- Two Dimensional Arrays - Code Demo
- Strings Overview
- Strings in C++ - Code Demo
- The String Class in C++
- String Class in C++ - Code Demo
- Raw Strings in C++
- Raw Strings in C++ - Code Demo
- String Streams in C++
- String Streams in C++ - Code Demo
- Pointers in C++
- Pointers in C++ - Code Demo
- Pointers and Arrays
- Pointers and Arrays - Code Demo
- Const and Void Pointers
- Const and Void Pointers - Code Demo
- Structures in C++
- Structures in C++ - Code Demo
- Structures With Complex Data Members
- Structures With Complex Data Members - Code Demo
- Pointers To Structures
- Pointers To Structures - Code Demo
- Structure Member Alignment
- Structure Member Alignment - Code Demo
- Structures As Parameters And Return Values
- Structures As Parameters And Return Values - Code Demo
- Arrays Of Structures in C++
- Arrays Of Structures - Code Demo
- Unions In C++
- Unions In C++ - Code Demo
- Dynamic Memory Allocation
- Dynamic Memory Allocation - Code Demo
- C++ Preprocessor Directives
- C++ Preprocessor Directives - Code Demo
- Exceptions And Error Handling In C++
- Exceptions and Error Handling in C++ - Code Demo
- File Handling in C++
- File Handling in C++ - Code Demo
Object-Oriented Programming in C++47 lessons
- Welcome to this Module - Object Oriented Programming in C++
- Introduction To Object Oriented Programming
- Classes And Objects
- Classes And Objects - Code Demo
- Encapsulation In C++
- Encapsulation In C++ - Code Demo
- Default Constructors And Destructors
- Default Constructors And Destructors - Code Demo
- Parameterized Constructors
- Parameterized Constructors - Code Demo
- Copy Constructors
- Copy Constructors - Code Demo
- Delegating Constructors , Explicit Constructor, default and delete
- Delegating Constructors , Explicit Constructor, default and delete - Code Demo
- Overloading Binary Operators
- Overloading Binary Operators - Code Demo
- Overloading Unary Operators
- Overloading Unary Operators - Code Demo
- Overloading Stream Operators
- Overloading Stream Operators - Code Demo
- Overloading New, Delete and Type Cast Operators
- Overloading New, Delete and Type Cast Operators - Code Demo
- Public Inheritance In C++
- Public Inheritance In C++ - Code Demo
- Parameterized Constructors In Single Inheritance
- Method Overriding, Hiding and Virtual Functions - Final and Override Keywords
- Method Overriding, Hiding and Virtual Functions - Code Demo
- Multiple Inheritance In C++
- Multi-Level Inheritance In C++
- Multi-Level Inheritance - Code Demo
- Private And Protected Inheritance In C++
- Dynamic_Cast And Reinterpret Cast
- Dynamic Cast And Reinterpret Cast - Code Demo
- Static Data and Functions In C++
- Static Data And Functions In C++ - Code Demo
- The this Pointer
- The this Pointer - Code Demo
- Friend Functions And Friend Classes
- Friend Functions And Friend Classes - Code Demo
- Static Polymorphism in C++
- Static Polymorphism In C++ - Code Demo
- Run Time Polymorphism In C++
- Run Time Polymorphism In C++ - Code Demo
- Abstract Classes In C++
- Abstract Classes In C++ - Code Demo
- Interfaces In C++
- Interfaces In C++ - Code Demo
Modern C++: Copy and Move, Templates, Lambdas and Resource Management56 lessons
- Introduction To Copy And Move Semantics
- Value Categories In C++
- Value Categories In C++ - Code Demo
- Copy Semantics In C++
- Copy Semantics In C++ - Code Demo
- R-Value References
- R-Value References - Code Demo
- Move Semantics In C++
- Move Semantics In C++ - Code Demo
- Perfect Forwarding In C++
- Perfect Forwarding In C++ - Code Demo
- const Revisited
- const In Classes And The Mutable Keyword - Code Demo
- constexpr, if-constexpr And switch-constexpr
- constexpr, if-constexpr And switch-constexpr - Code Demo
- consteval In C++
- consteval In C++ - Code Demo
- Functional Templates In C++
- Function Templates In C++ - Code Demo
- Template Parameters And Parameter Packs
- Template Parameters And Parameter Packs - Code Demo
- Template Type Deduction Rules
- Template Type Deduction Rules - Code Demo
- Template Specialization
- Template Specialization - Code Demo
- Variadic Templates And Fold Expressions
- Variadic Templates And Fold Expressions - Code Demo
- Class Templates
- Class Templates - Code Demo
- Template Aliases
- Template Aliases - Code Demo
- Introduction To Template Meta Programming
- Template Meta Programming (TMP) : Code Demo
- Type Traits In C++
- Type Traits In C++ - Code Demo
- SFINAE - Substitution Failure Is Not A Failure
- SFINAE - Code Demo
- Concepts In C++
- Concepts In C++ - Code Demo
- Function Pointers In C++
- Function Pointers In C++ - Code Demo
- Functors In C++
- Functors In C++ - Code Demo
- Lambdas In C++
- Lambdas In C++ - Code Demo
- Capturing Variables Into A Lambda
- Capturing Variables Into A Lambda - Code Demo
- Generic Lambdas In C++
- Generic Lambdas In C++ - Code Demo
- Introduction To Smart Pointers And RAII
- Unique Pointers In C++
- Unique Pointers In C++ - Code Demo
- Shared Pointers In C++
- Shared Pointers In C++ - Code Demo
- Weak Pointers In C++
- Weak Pointer In C++ - Code Demo
Advanced Standard C++ Libraries66 lessons
- Welcome to this Module - Advanced Standard C++ Libraries
- Overview Of The Standard Template Library
- The Array Class
- The Array Class - Code Demo
- The Vector Class
- The Vector Class - Code Demo
- The List Class
- The List Class - Code Demo
- The Deque Class
- The Deque Class - Code Demo
- The Map And Multi Map Class
- The Map And Multi Map Class - Code Demo
- The Set And Multi Set Class
- The Set And Multi Set Class - Code Demo
- Unordered Containers In The STL
- Unordered Containers In The STL - Code Demo
- Adaptor Containers In The STL
- Adaptor Containers In The STL - Code Demo
- Iterators In The STL
- Iterators In The STL - Code Demo
- Forward, Bidirectional And Random Iterators
- Forward, Bidirectional And Random Iterators - Code Example
- Algorithms In STL
- Algorithms In STL - Code Demo
- Parallel Execution Policies In STL
- Parallel Execution Policies In STL - Code Example
- Ranged Algorithms In STL
- Ranged Algorithms In STL - Code Demo
- Introduction To Utilities In Modern C++
- The Pair Class
- The Pair Class - Code Demo
- The Tuple Class
- The Tuple Class - Code Demo
- The Optional Class
- The Optional Class - Code Demo
- The Variant Class
- The Variant Class - Code Demo
- The Any Class
- The Any Class - Code Demo
- The Span Class
- The Span Class - Code Demo
- The String View Class
- The String View Class - Code Demo
- The Format Function
- The Format Function - Code Demo
- Structured Bindings In C++
- Structured Bindings In C++ - Code Demo
- Implementing Structured Bindings In Custom Classes
- Implementing Structured Bindings In Custom Classes - Code Demo
- The Spaceship Operator Or The 3-Way Operator
- The Spaceship Operator Or The 3-Way Operator - Code Demo
- Function Call Utilities
- Function Call Utilities - Code Demo
- Introduction to C++20 Views
- C++20 Views: Filter, Transform, Take, Drop, Reverse & More
- C++20 Views in Action: Building Range Pipelines with Code
- Introduction To The Chrono Library, Clocks And Duration
- Time Points, Clocks And Durations - Code Demo
- Duration And Time Points In The Chrono Library
- Duration And Time Points - Code Demo
- Time Operations In The Chrono Library
- Time Operations In The Chrono Library - Code Demo
- Calendar Functions In The Chrono Library
- Calendar Functions In The Chrono Library - Code Demo
- Time Zones In The Chrono Library
- Time Zones In The Chrono Library - Code Demo
Multithreaded Programming and Concurrency23 lessons
- Introduction To Multi-Threaded Programming
- Threads In C++
- Threads In C++ - Code Demo
- Thread Synchronization With Mutexes
- Thread Synchronization With Mutexes - Code Demo
- Locks In C++
- Locks In C++ - Code Demo
- Mutexes In C++
- Mutexes In C++ - Code Demo
- Atomics In C++
- Atomics In C++ - Code Demo
- Memory Ordering With Atomics
- Memory Ordering With Atomics - Code Demo
- Condition Variables In C++
- Condition Variables In C++ - Code Demo
- Futures In C++
- Futures In C++ - Code Demo
- Promises In C++
- Promises In C++-Code Demo
- Coroutines In C++
- Coroutines In C++ - Code Demo
- JThreads In C++
- JThreads In C++ - Code Demo
Filesystem and Regular Expressions4 lessons
- The Filesystem Library In C++
- The Filesystem Library In C++ - Code Demo
- The Regex Library In C++
- The Regex Library In C++ - Code Example
READY TO LEARN?
Start mastering C++ through C++23.
Study at your own pace on Udemy.
