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 Intermediate 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 / 51
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

Composition, Zipping, and Indicies

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

• 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

The std::atomic API and Data Tearing

Understand the physical reality of moving data between RAM and registers. Learn why explicit loads and stores are required to prevent data tearing in complex structs.

• New
View
Practical DSA

Compare-And-Swap and Optimistic Concurrency

Learn how to perform complex lock-free atomic updates using compare_exchange_weak() and the hardware limitations.

• Updated
View
Practical DSA

Memory Orders and 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.

• New
View
Practical DSA

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.

• Updated
View
Game Development with SDL3

Creating an SDL3 Project

Learn how to create a complete, cross-platform SDL3 project using CMake.

• Updated
View
Game Development with SDL3

Creating a Window

Learn how to create and customize windows using SDL3, covering initialization, window management, and handling properties.

• Updated
View
Game Development with SDL3

SDL3 Surfaces and Colors

Explore SDL3 surfaces, the canvases for drawing, understand pixel formats, colors, and set your window's background.

• Updated
View
Practical DSA

Linear and Arena Allocators

Bypass the OS and the global allocator. Build a custom linear arena allocator to implement fast memory allocation with zero fragmentation.

• Updated
View
Practical DSA

Object Pools and Free Lists

Solve the problem of dynamic entity lifespans. Build a zero-allocation object pool using an implicit free list hidden inside dead memory.

• Updated
View
Practical DSA

The Mechanics of Linked Lists

An introduction to node-based data structures. The physical reality of std::list, pointer swapping, fast insertions, and why pointer chasing destroys performance.

• New
View