There are a thousand places to grind algorithm problems, and nearly all of them hand you the same thing: a catalogue of patterns and the advice to recognise which one fits. That works right up until you meet a problem nobody catalogued. This course does the opposite. Every page opens with something you are not allowed to do — you can't try every candidate, you can't see the future, you can only ask one vertex who its neighbours are — and then works out what that leaves you. The algorithm arrives as the only move left, not as a name to memorise. Six pages carry the ideas and fourteen carry the tools, each one opening with more than twenty situations where you'd actually reach for it. You'll leave able to re-derive the thing you forgot, price it before writing a line, and say out loud what your bound does and does not promise — which is the part an interview is really testing, and the part a pattern list can never give you.
The ideas that carry the whole subject — cost, repeated work, the channel, the adversary, the one-vertex view, and the problems with no fast answer.
Start hereComputing the index instead of searching for it — hashing, sorting as a pre-move, binary search, heaps, and prefix sums.
OpenOne primitive under four different orderings — fewest hops, dependency order, cheapest path, and connectivity.
OpenDeciding what to compute and when — tables that reuse work, choices you can prove safe, and work you defer until it's cheap.
OpenGetting the answer without sorting everything, and deciding what to keep when you can't keep it all.
OpenA machine a thousand times faster, hand-written machine code, the best programmer alive — and it still loses by 17×. Try to find a machine speed that saves it.
Read page 1