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.

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
Introduction to Parallelism

SIMD and Automatic Vectorization

Learn how SIMD registers allow you to process multiple data points in a single instruction, unlocking the full power of each CPU core.

• New
View
Managing C++ Projects Using CMake

CMake Conditionals and Loops

Transform your static build descriptions into dynamic scripts with CMake's control flow commands, if() and foreach().

• Updated
View
Managing C++ Projects Using CMake

Automated Testing and CTest

Learn the fundamentals of automated testing in C++ with CTest. Create your first test suite, register tests with add_test(), and run them with the ctest command.

• Updated
View
Using Algorithms and Views

The Four Algorithm Families

The Producer-Consumer model of C++20 Ranges and the hardware implications of eager vs lazy evaluation.

• New
View
Using Algorithms and Views

Sorting and Materialization

Integrate sorting into C++20 pipelines, the difference between stable and unstable sorts, and how to use partial sorting.

• New
View
Using Algorithms and Views

Comparators and Projections

Learn how C++20 Projections allow us to separate sorting logic from data layout, the mechanics of std::invoke and the hardware reality of sorting large objects.

• New
View
Using Algorithms and Views

Proxy Sort and Structure of Arrays

Learn why sorting large objects is slow, and how to optimize it using Proxy Sorting and Data-Oriented Design (SoA).

• New
View
Using Algorithms and Views

Composition, Zipping, and Indicies

Iterate multiple containers simultaneously with zip, handle indices with enumerate, and skip elements with drop and stride.

• New
View