Concept Guides
Data Structures & Algorithms
How to reason about what code costs, and the structures and patterns that come up everywhere.
Big O Notation
A way to describe how an algorithm's time or memory use grows as its input grows, independent of any specific machine.
Arrays and Strings
The simplest way to store many values in order, and the text type built on the same idea.
Linked Lists
A chain of nodes, each pointing to the next, that trades fast indexing for cheap insertion.
Stacks and Queues
Two disciplined ways to restrict how you add and remove items: last-in-first-out, and first-in-first-out.
Trees and Graphs
Structures for data that branches or connects in more than one direction, from file systems to route maps.
Hashing and Hash Tables
Turning a value into a number that tells you almost exactly where to find it, without searching.
Sorting Algorithms
Putting a collection into order, and the real cost differences between the ways to do it.