Computer science
Build problem-solving habits with data structures, complexity, and clear trade-offs.
const values = [4, 1, 3];
values.sort((a, b) => a - b);
console.log(values);COURSE CURRICULUM
Finish one section at a time or jump directly to a concept you need.
Learn how problem statements, constraints, and computational models works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how pseudocode, invariants, and proof sketches works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how values, state, references, and mutation costs works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how abstract data types and representation choices works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how time complexity, space complexity, and amortized analysis works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how conditionals, greedy choices, and counterexamples works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how iteration, recursion, and divide-and-conquer works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how functions, recurrences, and dynamic programming works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how arrays, linked lists, stacks, queues, maps, and trees works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how strings, tries, hashing, and pattern search works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how failure cases, bounds, overflow, and adversarial input works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how modules, interfaces, and reusable algorithm components works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how graphs, heaps, disjoint sets, and balanced trees works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how files, streams, external memory, and concurrency works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how testing invariants, properties, and complexity claims works in Data Structures and Algorithms, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.