Modern C++ Made Simple

Whether you're new to coding or switching careers, we've got you covered. Learn C++ from the ground up starting with our introductory course.

Intro to C++ Programming

Beginner Course

Intro to C++ Programming
Become a software engineer with C++. Starting from the basics, we guide you step by step along the way
Progress0 of 61 Completed
Updated
View

First Lesson

No upcoming lessons available.

Get Started

Intermediate Course

Managing C++ Projects Using CMake
Manage complex, cross-platform builds using industry-standard tools. Create scalable build systems that automate the entire development lifecycle.
Progress0 of 61 Completed
Updated
View

First Lesson

No upcoming lessons available.

Get Started

Intermediate Course

Game Development with SDL3
Learn C++ and SDL development by creating hands on, practical projects inspired by classic retro games
Progress0 of 132 Completed
Updated
View

First Lesson

No upcoming lessons available.

Get Started

Intermediate Course

Professional C++
Comprehensive course covering advanced concepts, and how to use them on large-scale projects.
Progress0 of 128 Completed
Updated
View

First Lesson

No upcoming lessons available.

Get Started

Recent Updates

New content is added on a regular basis, and we consistently update, improve, and revise what's already available.

Implementing a Structure of Arrays

Domain-Specific Containers

Build a custom container that combines the performance of data-oriented design with the ergonomics of object-oriented programming.

• New
View
Implementing a Structure of Arrays

Sorting and Permuting Containers

Implement proxy sorting, physical memory permutations, and multi-threaded reordering.

• New
View
Implementing a Structure of Arrays

The Swap-and-Pop Idiom

Comparing the performance cost of deletion techniques, and implementing the Swap-and-Pop approach in a Structure of Arrays container.

• New
View
Implementing a Structure of Arrays

Stable Addressing and Tombstones

Solving the index invalidation problem and the trade-offs between memory density and reference stability.

• New
View
Implementing a Structure of Arrays

Generational Indices

Upgrade simple indices into Generational Handles, creating safe, persistent references that detect stale access.

• New
View
Implementing a Structure of Arrays

The Reallocation Spike

The hidden cost of std::vector growth, why it is dangerous for real-time systems, and how to mitigate it.

• New
View
Intro to C++ Programming

The this Pointer

Learn about the this pointer in C++ programming, focusing on its application in identifying callers, chaining functions, and overloading operators.

• Updated
View
Intro to C++ Programming

Function Arguments and Parameters

Making our functions more useful and dynamic by providing them with additional values to use in their execution

• Updated
View
Introduction to Parallelism

Asynchronous Tasks with std::async

Offload heavy work to other CPU cores. Learn how std::async and std::future enable concurrent execution.

• New
View
Introduction to Parallelism

Parallel Algorithms and Execution Policies

Combine the elegance of C++20 Ranges with the power of parallel execution policies.

• New
View
Introduction to Parallelism

Locks and Atomics

Learn how mutexes and atomics prevent race conditions, and why hardware contention can make multithreaded code slower than single-threaded code.

• New
View
Introduction to Parallelism

Cache Coherency and False Sharing

Explore the performance cost of synchronization, how to mitigate it, and how to avoid it entirely with better algorithm design.

• New
View