Skip to main content

Learning Resources

This module is populated from the local chunked books in library/raw/semester-02-algorithms/books. Use this page as a source map, not as an instruction to read everything.

Source Stack

BookRoleHow to use it in this module
The Algorithm Design Manual (Skiena)Primary / problem-drivenDefault for intuition, war stories, pragmatic tradeoffs, and how to pick an algorithm
Introduction to Algorithms (CLRS)Primary / proofs and boundsDefault for rigorous analysis: lower bounds, recurrences, amortized arguments
Algorithms (Sedgewick)Selective supportUse when you want clean, implementation-focused explanations with visual intuition
Grokking AlgorithmsFirst-pass framingUse for plain-language intro on binary search, hash tables, and quicksort if CLRS or Skiena feel dense
Competitive ProgrammingExercise laneUse when you want many practice problems and tricks for binary search, heaps, hashing

Resource Map by Cluster

Cluster 1: Comparison-Based Sorting and the Lower Bound

NeedBest local chunkWhy
insertion sort and invariantCLRS 2.1Cleanest first example of loop-invariant proof
mergesort design and correctnessCLRS 2.3Canonical divide-and-conquer treatment
mergesort intuitionSkiena 4.5Short and pragmatic framing
quicksort definitionCLRS 7.1Clean Lomuto-style partition description
quicksort analysisCLRS 7.2Worst-case and balanced-partition derivations
randomized quicksortCLRS 7.3Best explanation of expected n log n
comparison lower boundCLRS 8.1The decision-tree argument in its canonical form
alternate sorting overviewSedgewick: QuicksortImplementation-focused second pass

Cluster 2: Linear-Time and Specialized Sorting

NeedBest local chunkWhy
counting sortCLRS 8.2Stability and prefix-sum placement done precisely
radix sortCLRS 8.3Clear LSD framing with stability requirement
bucket sortCLRS 8.4Useful contrast to counting and radix
distribution sort intuitionSkiena 4.7Engineer's-eye view of bucket-based sorting
applications of sortingSkiena 4.1When sorting is secretly the right move
pragmatics of sortingSkiena 4.2Real-world tuning considerations
external sortingSedgewick: External SearchingDisk-friendly sorting and merge patterns

Cluster 3: Searching in Sorted and Unsorted Data

NeedBest local chunkWhy
binary search basicsGrokking: Binary SearchSimplest first pass before CLRS/Skiena
binary search variantsSkiena 4.9Problem-driven coverage
binary search tricksCompetitive Programming 3.3.1Predicate-based and answer-search patterns
min/maxCLRS 9.1Base case for selection
expected-time selectionCLRS 9.2Quickselect derivation
deterministic selectionCLRS 9.3Median-of-medians with the careful constant
containers overviewSkiena 3.1Array vs linked-list tradeoff catalog
array-based structuresCLRS 10.1Stack and queue implementations

Cluster 4: Hash Tables as a Dictionary Primitive

NeedBest local chunkWhy
hashing introGrokking: Hash TablesPlain-language first pass
direct-address tablesCLRS 11.1Motivation before hash tables
hash tables (chaining)CLRS 11.2Canonical chaining analysis
hash functionsCLRS 11.3Universal hashing and families
open addressingCLRS 11.4Probe-sequence analysis
practical hashingCLRS 11.5Choosing table size, dealing with load
hashing and stringsSkiena 3.7Practical-engineer framing
collisions and load factorGrokking: Collisions and Load FactorApproachable reinforcement

Cluster 5: Heaps and Priority Queues

NeedBest local chunkWhy
heap structureCLRS 6.1Canonical implicit-tree framing
heap property maintenanceCLRS 6.2Sift-down walked through carefully
heapsortCLRS 6.3Includes the O(n) build analysis
priority queue APICLRS 6.5Standard operations and decrease_key treatment
heap applicationsSkiena 4.3Sort-via-PQ and Dijkstra connection
priority queue textSkiena 3.5Short pragmatic intro
heap implementationSedgewick: Priority QueuesClean array-backed implementation walk
STL containers for PQCompetitive Programming 2.3Library-first practical use

Exercise Support Chunks

Use these when the concept pages are understood but fluency is weak:

External Resources (Read-If-Curious)

These are validated external references. Do not treat them as required reading. Use them if you want a visual, video, or a second explanation.

Use Rules

  • If you need intuition, go to Skiena first.
  • If you need a proof or a bound, go to CLRS.
  • If you need a short alternate explanation, go to Grokking or Sedgewick.
  • Open one chunk for one concept gap; do not wander through a whole chapter sequence by default.
  • If rereading is not fixing the problem, stop and rewrite the concept in your own words before reading more.
  • External resources are optional. The concept pages and local book chunks are sufficient.