Complexity theory and Math for CS are both by the awesome Prof. Mark Bun @ BU. Prof.Hohmer for Graduate Algorithms, rest is either MIT or Harvard. Compiled from all the sources, plus some experience.
Best results? Pick a language, only use raw Vim, and do a bunch of leetcodes. Leetcode is great for helping with algorithmic thinking.
Should take 3-4 days.
Unit 1: Introduction
Unit 2: Sorting and Trees
Unit 3: Hashing
Unit 4: Numerics
Unit 5: Graphs
Unit 6: Shortest Paths
Unit 7: Dynamic Programming
First watch: https://www.youtube.com/watch?v=YX40hbAHx3s
Temporal: Class overview, pointer machine, partial persistence, full persistence, confluent persistence, functional
Temporal: Partial retroactivity, full retroactivity, nonoblivious retroactivity
Geometric: Point location via persistence, dynamic via retroactive; orthogonal range queries, range trees, layered range trees, dynamizing augmentation via weight balance, fractional cascading
Geometric: O(log n) 3D orthogonal range searching via fractional cascading; kinetic data structures
Dynamic optimality: Binary search trees, analytic bounds, splay trees, geometric view, greedy algorithm
Dynamic optimality: Independent rectangle, Wilber, and signed greedy lower bounds; key-independent optimality; O(lg lg n)-competitive tango trees
Memory hierarchy: Models, cache-oblivious B-trees
Memory hierarchy: Ordered-file maintenance, list labeling, order queries, cache-oblivious priority queues
Memory hierarchy: Distribution sweeping via lazy funnelsort; cache-oblivious orthogonal 2D range searching: batched and online
Dictionaries: Universal, k-wise independent, simple tabulation hashing; chaining, dynamic perfect hashing, linear probing, cuckoo hashing
Integer: Models, predecessor problem, van Emde Boas, x-fast and y-fast trees, indirection
Integer: Fusion trees: sketching, parallel comparison, most significant set bit
Integer: Predecessor lower bound via round elimination
Integer: Sorting in linear time for w = O(lg2+ε n), priority queues
Static trees: Least common ancestor, range minimum queries, level ancestor
Strings: Suffix tree, suffix array, linear-time construction for large alphabets, suffix tray, document retrieval
Succinct: Rank, select, tries
Succinct: Compact suffix arrays and trees
Dynamic graphs: Link-cut trees, heavy-light decomposition
Dynamic graphs: Euler tour trees, decremental connectivity in trees in O(1), fully dynamic connectivity in O(lg2 n), survey
Dynamic graphs: Ω(lg n) lower bound for dynamic connectivity
History of memory models: Idealized 2-level, red-blue pebble game, external memory, HMM, BT, (U)MH, cache oblivious.