Practical DSA

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

4.6 (3,044 reviews)
Your Progress0%

Who This Course Is For

Course Requirements Summary

Course Requirements

  • A code editor and a development environment that can compile C++ code
  • Basic understanding of C++ including classes, structs, arrays, and pointers
  • Those familiar with a similar programming language such as C may be able to follow along

New to Programming?

If you're completely new to programming, we recommend starting with our introductory course:

Intro to C++ Programming

Become a software engineer with C++. Starting from the basics, we guide you step by step along the way

4.8 (31,198 reviews)
View Recommended Course

What You'll Learn

A hands-on course where you'll implement, benchmark, and optimize code, turning abstract concepts into practical skills you can immediately apply.

Learn by Building

Implement real systems like ECS and custom containers from scratch, reinforcing concepts through hands-on work and gaining confidence by building complete, working solutions.

From Theory to Code

Turn abstract concepts into efficient implementations, learning how theoretical ideas translate into real-world code you can understand, modify, and confidently apply.

Debug and Optimize

Identify performance bottlenecks, measure improvements correctly, and apply practical optimization techniques without guesswork or misleading assumptions about what actually matters.

Modern C++ Techniques

Use C++20 and C++23 features to write cleaner, more expressive code while reducing boilerplate and improving both safety and performance in everyday development.

Reusable Patterns

Build a toolkit of reusable patterns and approaches that transfer across projects, helping you solve new problems faster without relying on memorized solutions.

Real-World Tradeoffs

Learn how to balance performance, readability, and maintainability, making better engineering decisions based on real constraints rather than idealized or purely theoretical scenarios.

Course Content

This course breaks down learning into 41 lessons across 9 chapters. It's designed for easy navigation and mastery of each topic.

Lesson 1: Data Structures & Algorithms

An introduction to data structures and algorithms from a practical, hardware-first perspective. Learn how the physical layout of your data in memory impacts performance.

Lesson 2: CPUs, Memory, and Locality

Understand how our code interacts with physical hardware. Learn about virtual memory, the stack vs. heap, cache lines, and prefetching.

Lesson 3: Polynomial Algorithms

Learn how input size affects execution speed and the most common class of algorithms.

Lesson 4: Logarithmic and Linearithmic Algorithms

Working with massive datasets using divide and conquer strategies, and the the required trade-offs.

Lesson 5: 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.

First Lesson

Data Structures & Algorithms

An introduction to data structures and algorithms from a practical, hardware-first perspective. Learn how the physical layout of your data in memory impacts performance.

Start Course