Home / Modern C++ from Scratch

MODERN C++ · BEGINNER TO ADVANCED · 287 LESSONS

Modern C++ from Scratch:
C++23, STL, OOPS & Multithreading

The way professional engineers write it.

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
  1. Welcome to this module - Procedural Programming in C++
  2. First C++ Program in Visual Studio
  3. First C++ Program - Demo
  4. Primitive Datatype in C++
  5. Primitive Datatypes in C++ - Code Demo
  6. Literals in C++
  7. Literals in C++ - Code
  8. Constants and References
  9. Constants and References - Code
  10. Type Casting, Aliasing and Inference - Introduction
  11. Type Casting in C++
  12. Type Casting in C++ - Code
  13. Type Alias in C++
  14. Type Alias in C++ - Code
  15. Type Inference in C++
  16. Type Inference - Code
  17. Initalizing in C++
  18. Initialization in C++ - Code
  19. Arithmetic Operators in C++
  20. Arithmetic Operators in C++ - Code
  21. Relational and Logical Operators in C++
  22. Relational and Logical Operators in C++ - Code
  23. Bitwise Operators and the bitset class in C++
  24. Bitwise Operators and the bitset class in C++ - Code
  25. Compound Assignment Operators in C++
  26. Compound Assignment Operators in C++ - Code
  27. Ternary and sizeof Operator in C++
  28. Ternary and sizeof Operator in C++ - Code
  29. Console I/O Operations in C++
  30. Console I/O Operations in C++ - Code
  31. Using the Debugger in Visual Studio
  32. If, if-else, if-else-if and switch in C++
  33. Conditional Statements In C++ - Code Demo
  34. Loops in C++
  35. Loops in C++ - Code Demo
  36. Control Flow Interruptions - break, continue, goto, exit() and return
  37. Control Flow Interruptions - Code Demo
  38. Intializers in Control Statements
  39. Why Functions?
  40. Functions in C++
  41. Functions in C++ - Code Demo
  42. What Happens When A Function Is Called?
  43. Passing Data To Functions
  44. Passing Data To Functions - Code Demo
  45. Function Overloading
  46. Function Overloading - Code Demo
  47. Inline & Recursive Functions
  48. Inline & Recursive Functions - Code Demo
  49. Data In Memory
  50. Storage Classes in C++
  51. Storage Classes in C++ - Code Demo
  52. One Dimensional Arrays in C++
  53. One Dimensional Arrays in C++ - Code Demo
  54. Two Dimensional Arrays in C++
  55. Two Dimensional Arrays - Code Demo
  56. Strings Overview
  57. Strings in C++ - Code Demo
  58. The String Class in C++
  59. String Class in C++ - Code Demo
  60. Raw Strings in C++
  61. Raw Strings in C++ - Code Demo
  62. String Streams in C++
  63. String Streams in C++ - Code Demo
  64. Pointers in C++
  65. Pointers in C++ - Code Demo
  66. Pointers and Arrays
  67. Pointers and Arrays - Code Demo
  68. Const and Void Pointers
  69. Const and Void Pointers - Code Demo
  70. Structures in C++
  71. Structures in C++ - Code Demo
  72. Structures With Complex Data Members
  73. Structures With Complex Data Members - Code Demo
  74. Pointers To Structures
  75. Pointers To Structures - Code Demo
  76. Structure Member Alignment
  77. Structure Member Alignment - Code Demo
  78. Structures As Parameters And Return Values
  79. Structures As Parameters And Return Values - Code Demo
  80. Arrays Of Structures in C++
  81. Arrays Of Structures - Code Demo
  82. Unions In C++
  83. Unions In C++ - Code Demo
  84. Dynamic Memory Allocation
  85. Dynamic Memory Allocation - Code Demo
  86. C++ Preprocessor Directives
  87. C++ Preprocessor Directives - Code Demo
  88. Exceptions And Error Handling In C++
  89. Exceptions and Error Handling in C++ - Code Demo
  90. File Handling in C++
  91. File Handling in C++ - Code Demo
Object-Oriented Programming in C++47 lessons
  1. Welcome to this Module - Object Oriented Programming in C++
  2. Introduction To Object Oriented Programming
  3. Classes And Objects
  4. Classes And Objects - Code Demo
  5. Encapsulation In C++
  6. Encapsulation In C++ - Code Demo
  7. Default Constructors And Destructors
  8. Default Constructors And Destructors - Code Demo
  9. Parameterized Constructors
  10. Parameterized Constructors - Code Demo
  11. Copy Constructors
  12. Copy Constructors - Code Demo
  13. Delegating Constructors , Explicit Constructor, default and delete
  14. Delegating Constructors , Explicit Constructor, default and delete - Code Demo
  15. Overloading Binary Operators
  16. Overloading Binary Operators - Code Demo
  17. Overloading Unary Operators
  18. Overloading Unary Operators - Code Demo
  19. Overloading Stream Operators
  20. Overloading Stream Operators - Code Demo
  21. Overloading New, Delete and Type Cast Operators
  22. Overloading New, Delete and Type Cast Operators - Code Demo
  23. Public Inheritance In C++
  24. Public Inheritance In C++ - Code Demo
  25. Parameterized Constructors In Single Inheritance
  26. Method Overriding, Hiding and Virtual Functions - Final and Override Keywords
  27. Method Overriding, Hiding and Virtual Functions - Code Demo
  28. Multiple Inheritance In C++
  29. Multi-Level Inheritance In C++
  30. Multi-Level Inheritance - Code Demo
  31. Private And Protected Inheritance In C++
  32. Dynamic_Cast And Reinterpret Cast
  33. Dynamic Cast And Reinterpret Cast - Code Demo
  34. Static Data and Functions In C++
  35. Static Data And Functions In C++ - Code Demo
  36. The this Pointer
  37. The this Pointer - Code Demo
  38. Friend Functions And Friend Classes
  39. Friend Functions And Friend Classes - Code Demo
  40. Static Polymorphism in C++
  41. Static Polymorphism In C++ - Code Demo
  42. Run Time Polymorphism In C++
  43. Run Time Polymorphism In C++ - Code Demo
  44. Abstract Classes In C++
  45. Abstract Classes In C++ - Code Demo
  46. Interfaces In C++
  47. Interfaces In C++ - Code Demo
Modern C++: Copy and Move, Templates, Lambdas and Resource Management56 lessons
  1. Introduction To Copy And Move Semantics
  2. Value Categories In C++
  3. Value Categories In C++ - Code Demo
  4. Copy Semantics In C++
  5. Copy Semantics In C++ - Code Demo
  6. R-Value References
  7. R-Value References - Code Demo
  8. Move Semantics In C++
  9. Move Semantics In C++ - Code Demo
  10. Perfect Forwarding In C++
  11. Perfect Forwarding In C++ - Code Demo
  12. const Revisited
  13. const In Classes And The Mutable Keyword - Code Demo
  14. constexpr, if-constexpr And switch-constexpr
  15. constexpr, if-constexpr And switch-constexpr - Code Demo
  16. consteval In C++
  17. consteval In C++ - Code Demo
  18. Functional Templates In C++
  19. Function Templates In C++ - Code Demo
  20. Template Parameters And Parameter Packs
  21. Template Parameters And Parameter Packs - Code Demo
  22. Template Type Deduction Rules
  23. Template Type Deduction Rules - Code Demo
  24. Template Specialization
  25. Template Specialization - Code Demo
  26. Variadic Templates And Fold Expressions
  27. Variadic Templates And Fold Expressions - Code Demo
  28. Class Templates
  29. Class Templates - Code Demo
  30. Template Aliases
  31. Template Aliases - Code Demo
  32. Introduction To Template Meta Programming
  33. Template Meta Programming (TMP) : Code Demo
  34. Type Traits In C++
  35. Type Traits In C++ - Code Demo
  36. SFINAE - Substitution Failure Is Not A Failure
  37. SFINAE - Code Demo
  38. Concepts In C++
  39. Concepts In C++ - Code Demo
  40. Function Pointers In C++
  41. Function Pointers In C++ - Code Demo
  42. Functors In C++
  43. Functors In C++ - Code Demo
  44. Lambdas In C++
  45. Lambdas In C++ - Code Demo
  46. Capturing Variables Into A Lambda
  47. Capturing Variables Into A Lambda - Code Demo
  48. Generic Lambdas In C++
  49. Generic Lambdas In C++ - Code Demo
  50. Introduction To Smart Pointers And RAII
  51. Unique Pointers In C++
  52. Unique Pointers In C++ - Code Demo
  53. Shared Pointers In C++
  54. Shared Pointers In C++ - Code Demo
  55. Weak Pointers In C++
  56. Weak Pointer In C++ - Code Demo
Advanced Standard C++ Libraries66 lessons
  1. Welcome to this Module - Advanced Standard C++ Libraries
  2. Overview Of The Standard Template Library
  3. The Array Class
  4. The Array Class - Code Demo
  5. The Vector Class
  6. The Vector Class - Code Demo
  7. The List Class
  8. The List Class - Code Demo
  9. The Deque Class
  10. The Deque Class - Code Demo
  11. The Map And Multi Map Class
  12. The Map And Multi Map Class - Code Demo
  13. The Set And Multi Set Class
  14. The Set And Multi Set Class - Code Demo
  15. Unordered Containers In The STL
  16. Unordered Containers In The STL - Code Demo
  17. Adaptor Containers In The STL
  18. Adaptor Containers In The STL - Code Demo
  19. Iterators In The STL
  20. Iterators In The STL - Code Demo
  21. Forward, Bidirectional And Random Iterators
  22. Forward, Bidirectional And Random Iterators - Code Example
  23. Algorithms In STL
  24. Algorithms In STL - Code Demo
  25. Parallel Execution Policies In STL
  26. Parallel Execution Policies In STL - Code Example
  27. Ranged Algorithms In STL
  28. Ranged Algorithms In STL - Code Demo
  29. Introduction To Utilities In Modern C++
  30. The Pair Class
  31. The Pair Class - Code Demo
  32. The Tuple Class
  33. The Tuple Class - Code Demo
  34. The Optional Class
  35. The Optional Class - Code Demo
  36. The Variant Class
  37. The Variant Class - Code Demo
  38. The Any Class
  39. The Any Class - Code Demo
  40. The Span Class
  41. The Span Class - Code Demo
  42. The String View Class
  43. The String View Class - Code Demo
  44. The Format Function
  45. The Format Function - Code Demo
  46. Structured Bindings In C++
  47. Structured Bindings In C++ - Code Demo
  48. Implementing Structured Bindings In Custom Classes
  49. Implementing Structured Bindings In Custom Classes - Code Demo
  50. The Spaceship Operator Or The 3-Way Operator
  51. The Spaceship Operator Or The 3-Way Operator - Code Demo
  52. Function Call Utilities
  53. Function Call Utilities - Code Demo
  54. Introduction to C++20 Views
  55. C++20 Views: Filter, Transform, Take, Drop, Reverse & More
  56. C++20 Views in Action: Building Range Pipelines with Code
  57. Introduction To The Chrono Library, Clocks And Duration
  58. Time Points, Clocks And Durations - Code Demo
  59. Duration And Time Points In The Chrono Library
  60. Duration And Time Points - Code Demo
  61. Time Operations In The Chrono Library
  62. Time Operations In The Chrono Library - Code Demo
  63. Calendar Functions In The Chrono Library
  64. Calendar Functions In The Chrono Library - Code Demo
  65. Time Zones In The Chrono Library
  66. Time Zones In The Chrono Library - Code Demo
Multithreaded Programming and Concurrency23 lessons
  1. Introduction To Multi-Threaded Programming
  2. Threads In C++
  3. Threads In C++ - Code Demo
  4. Thread Synchronization With Mutexes
  5. Thread Synchronization With Mutexes - Code Demo
  6. Locks In C++
  7. Locks In C++ - Code Demo
  8. Mutexes In C++
  9. Mutexes In C++ - Code Demo
  10. Atomics In C++
  11. Atomics In C++ - Code Demo
  12. Memory Ordering With Atomics
  13. Memory Ordering With Atomics - Code Demo
  14. Condition Variables In C++
  15. Condition Variables In C++ - Code Demo
  16. Futures In C++
  17. Futures In C++ - Code Demo
  18. Promises In C++
  19. Promises In C++-Code Demo
  20. Coroutines In C++
  21. Coroutines In C++ - Code Demo
  22. JThreads In C++
  23. JThreads In C++ - Code Demo
Filesystem and Regular Expressions4 lessons
  1. The Filesystem Library In C++
  2. The Filesystem Library In C++ - Code Demo
  3. The Regex Library In C++
  4. The Regex Library In C++ - Code Example

READY TO LEARN?

Start mastering C++ through C++23.

Study at your own pace on Udemy.

Go to the Udemy course ↗