Selected links and resources
The Algorithmics topic notes and lecture page are the primary course materials. The external resources below offer alternative explanations, complete courses, reference material, and interactive demonstrations. You are not expected to read or watch all of them.
Complete courses
- MIT 6.006: Introduction to Algorithms - an undergraduate course on fundamental algorithms and data structures, with lectures, notes, assignments, and exams.
- MIT 6.046J: Design and Analysis of Algorithms - a more advanced course on algorithm design techniques, analysis, and selected graph and optimisation problems.
- MIT 6.851: Advanced Data Structures - an advanced course covering sophisticated data-structure ideas and research-level techniques.
Books and free readings
- Cormen, Leiserson, Rivest, and Stein: Introduction to Algorithms, 4th edition - a comprehensive reference for algorithms and proofs.
- Kleinberg and Tardos: Algorithm Design - particularly useful for design strategies, reductions, and problem-solving arguments.
- Motwani and Raghavan: Randomized Algorithms - a specialist reference on randomisation in algorithm design and analysis.
- Jeff Erickson: Algorithms - a freely available algorithms textbook with careful explanations and proofs.
- Open Data Structures - a freely available textbook on practical data structures and their analysis.
Visual and interactive resources
- VisuAlgo - animations and exercises for sorting, trees, heaps, graphs, dynamic programming, and other topics.
- Data Structure Visualizations - interactive demonstrations of trees, heaps, hashing, graph algorithms, and related structures.
- Visualizing Algorithms - visual explanations by Mike Bostock, including sampling, sorting, and maze generation.
- The Sound of Sorting - sorting algorithms visualised and represented through sound.
- Big-O Cheat Sheet - a quick memory aid for common data structures and algorithms; verify important claims against the course notes or a textbook.
Succinct data structures
- Course note: Succinct data structures - bit vectors, rank/select operations, and succinct tree representations.
- SDSL v3 - the maintained C++ Succinct Data Structure Library.
- SDSL v2 cheat sheet - a compact legacy reference; some APIs may differ from SDSL v3.
Algorithmic puzzles
NineCard puzzle (a nine-card or Monkey Puzzle variant) is a small constraint and search problem: arrange nine cards in a square so that all adjacent edges match.
