Practical DSA
Learn data structures and algorithms by building real systems, measuring performance, and understanding how your code interacts with the physical hardware.
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
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.
Chapters
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.
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