Chapter 20: End-to-End Case Studies. 25 sections.
25 items
Design an autocomplete engine that provides search suggestions while a user types.
Design a search ranking pipeline that receives a user query, retrieves candidate documents, scores them, and returns a ranked result list.
Design a service that answers shortest path queries over a graph.
Design an event scheduler that stores tasks, orders them by time, executes ready tasks, and handles updates such as cancellation or rescheduling.
Design a text diff tool that compares two versions of a document and reports what changed.
Design a compression tool that reduces the size of textual data while preserving the original information.
Design a system that receives a stream of log events and removes duplicates before storage or analysis.
Design a batch job that analyzes a large graph and computes useful metrics such as degree counts, connected components, PageRank-style importance scores, and community structure.
Design a recommendation system that suggests items to users based on past behavior.
Design a spell checker that detects misspelled words and suggests likely corrections.
Design a rate limiter that controls how often a client can perform an operation.
Design a cache that stores recently used values and evicts entries when capacity is full.
Design a crawler frontier that decides which URLs a web crawler should visit next.
Design a static analyzer that scans source code and reports likely defects without running the program.
Design a small database index that supports fast lookup by key and efficient range scans.
Design a simulation that routes packets through a network of routers and links.
Design a planner that receives a set of tasks and dependencies, then returns a valid execution order.
Design a plagiarism detector that compares documents and reports suspicious similarity.
Design a geometry query engine that stores spatial objects and answers geometric questions efficiently.
Design a small constraint solver that assigns values to variables while satisfying a set of rules.
Design a system that consumes events continuously and computes live metrics such as counts, rates, unique users, moving averages, and top items.
Design a sorting tool that can sort data larger than available memory.
Design a matchmaking system that pairs users, players, tasks, or entities according to compatibility rules.
Design a small workflow for checking an algorithm's correctness argument against its implementation.
You have learned dozens of algorithms and data structures.