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

Free 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 / 61
Get Started

Free Intermediate Course

Professional C++

Comprehensive course covering advanced concepts, and how to use them on large-scale projects.

Progress0 / 128
Get Started

Free Advanced Course

Practical DSA

Learn data structures and algorithms by building real systems, measuring performance, and understanding how your code interacts with the physical hardware.

Progress0 / 75
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 / 61
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 / 132
Get Started

Recent Updates

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

Practical DSA

Locks and Atomics

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

• Updated
View
Practical DSA

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.

• Updated
View
Practical DSA

Reader-Writer Locks and std::shared_mutex

Learn how to protect stateful data structures with minimal contention using critical section granularity, std::shared_mutex, and deadlock-safe lock acquisition.

• New
View
Practical DSA

NP-Hard and Approximations

Learn why some problems are impossible to solve exactly and how we can use approximations like Monte Carlo simulations to cheat.

• Updated
View
Practical DSA

Configuring a CMake Project

Separate our core logic into libraries, configure CMake for multiple targets, and apply hardware-aware optimizations.

• Updated
View
Practical DSA

The Iterator Pattern

The bridge between data layout and algorithms. Learn how iterators abstract memory traversal and the hierarchy of capabilities.

• Updated
View
Practical DSA

Index-Based and Pool-Allocated Lists

Replace 64-bit pointers with lightweight indices and back our linked list with a contiguous memory pool to maximize performance.

• Updated
View
Practical DSA

Instruction Reordering

Learn how CPU out-of-order execution breaks lock-free code, and how to use seq_cst, acquire, release, acq_rel, and relaxed to fix it.

• Updated
View
Practical DSA

Concurrency and Striped Hashing

Scale the Swiss Table across multiple CPU cores with sharded striping, reader-writer locks, and cache-line alignment.

• Updated
View
Practical DSA

Swiss Table Memory Layout

Rethink hash table memory layout for SIMD hardware by splitting metadata from payloads and extracting 7-bit hash signatures.

• New
View
Practical DSA

Swiss Table SIMD Probing

Combine structure of arrays metadata with xsimd batch operations to search 16, 32, or 64 hash buckets in a single clock cycle.

• New
View
Intro to C++ Programming

Creating Variables

Creating variables to store and update the data that describes our objects. We also introduce comments, allowing us to describe our code in plain language.

• Updated
View