About Contents Citing

Adventures in Advanced Algorithms

A Guide for Curious Students

By Sepehr Assadi

About

Adventures in Advanced Algorithms grew out of the development of open educational resources (OER) for the course Advanced Algorithms (CS 466/666) taught at the School of Computer Science, University of Waterloo. The goal of these notes is to present a series of modern algorithmic techniques in a mathematically rigorous manner to advanced undergraduate and beginning graduate students, and anyone curious about algorithm design beyond the standard introductory curriculum.

The emphasis is not on cataloging problems, but on enhancing how we think about problems algorithmically, and on showcasing some of the key algorithmic and analytical techniques that have emerged throughout theoretical computer science (TCS) in the last half-century—advances that introductory courses, still largely centered on 1960s–70s material, tend to leave out. The notes assume familiarity with basic algorithm design and analysis and with discrete probability, and build toward more advanced techniques and proof methods. Each chapter is sized to be covered in roughly one lecture, and the material is intended to be read largely in the order presented, although after Part I the remaining parts can, for the most part, be read in any order.

Disclaimer: The choice of topics in this book is inherently biased—by the personal taste of the author, and by what could realistically be covered in his courses. The book does not attempt to provide a comprehensive survey of all techniques in algorithm design, nor does it in any way claim to cover the most “important” or “fundamental” topics; rather, the topics were chosen simply to introduce the reader to some advanced ideas in TCS and algorithm design.

This book is released as an open educational resource: freely available for instructors and students to use, adapt, and improve. See here for the copyright information and how to cite this book.

Work in Progress:

This book is actively being prepared. Chapters are added and revised regularly, and a good number of them are still under construction—those are marked below and do not have a PDF yet. A single PDF of the complete book will be available soon; for now, the table of contents and the available individual chapters can be downloaded below. Comments, corrections, and suggestions are most welcome—please email me.

Contents

The full outline of the book, including chapters that are not yet released, is available in the table of contents:  TABLE OF CONTENTS (PDF)

Individual chapters are available below. Chapters still under construction are marked coming up soon and will be posted as they are finished.

Part IBackground and Motivating Examples
Probabilistic tools and a few simple and motivating algorithms.
1Motivating ExampleA sublinear-time randomized (Δ+1) coloring—randomization as a warm-up.
2Probabilistic Analysis I: Concentration InequalitiesBalls-and-bins, concentration inequalities (Markov, Chebyshev, Chernoff), and boosting success probability.
3Probabilistic Analysis II: Random Graph TheoryPower of two choices; components and edge counts in random graphs.
4Streaming Algorithms I: Distinct ElementsEstimating the number of distinct elements in a stream.
5Streaming Algorithms II: Frequency MomentsThe Morris counter and the AMS sketch (first and second frequency moments).
Part IILinear and Semidefinite Programming
Combinatorial optimization through continuous relaxations—linear and semidefinite programs, and how to round them.
6Linear Programming I: Basics and ApplicationsWhat linear programs are, and how to model problems with them.
7Linear Programming II: LP DualityWeak and strong duality, and what they let you prove.
8Linear Programming III: Approximation Algorithms and Integrality GapsRounding and dual fitting for set cover; integrality gaps.
9Linear Programming IV: A Primal-Dual Algorithm for Bipartite MatchingA primal-dual (1−ε)-approximation for matching.
10Linear Programming V: Center of Gravity AlgorithmSolving linear programs with the center-of-gravity method.
11Semidefinite Programming I: Maximum CutThe SDP relaxation and rounding for Max-Cut.
12Semidefinite Programming II: Vertex ColoringColoring 3-colorable graphs via SDPs and random separators.
Part IIIMultiplicative Weight Update Technique
A versatile algorithmic technique and some of its many uses.
13Multiplicative Weight Update I: Learning from ExpertsThe experts problem, weighted majority, and the MWU method.
14Multiplicative Weight Update II: Approximating Linear ProgramsApproximating the matching LP with MWU.
15Multiplicative Weight Update III: Width Reduction TechniquesMaking MWU faster by controlling its width.
16Multiplicative Weight Update IV: Undirected Maximum FlowApproximate maximum flow via MWU and electrical flows.
17Multiplicative Weight Update V: Adaptive Sparsification
Part IVGraph Algorithms
A sample of some modern graph algorithms: spanning trees, shortest paths, and more.
18Minimum Spanning Trees I: A Fast Deterministic AlgorithmClassical MST algorithms and Fredman–Tarjan algorithm.
19Minimum Spanning Trees II: A Linear-Time Randomized AlgorithmThe Karger–Klein–Tarjan expected-linear-time MST.
20Shortest Paths I: Spanners and Probabilistic Tree EmbeddingsGraph spanners, low-diameter decompositions, and tree embeddings.
21Shortest Paths II: Negative-Weights in Nearly-Linear TimeSingle-source shortest paths with negative weights in nearly-linear time.
22Edge Coloring: A Near-Linear Time Algorithm
Part VMore Advanced Probabilistic Techniques
A more in-depth study of probabilistic tools: the Lovász Local Lemma, sharper concentration inequalities, polynomial methods, and random walks.
23Probabilistic Method and Lovász Local LemmaThe probabilistic method and the Lovász Local Lemma.
24Algorithmic Lovász Local Lemma and Entropy CompressionThe Moser–Tardos algorithm and entropy compression.
25Strong(er) Concentration Bounds I: Martingales and Azuma’s InequalityMartingales and the Azuma–Hoeffding inequality.
26Strong(er) Concentration Bounds II: Talagrand’s InequalityTalagrand’s inequality and its applications.
27Strong(er) Concentration Bounds III: Gaussian Variables
28Polynomial Methods: Schwartz–Zippel Lemma
29Random Walks I: Markov Chains
30Random Walks II: Graphs and Hitting Times
31Random Walks III: Mixing Time and Couplings
coming up soonPart VIModern Models of Computation
Citing

If you use or adapt this book, please cite it as:

Sepehr Assadi. Adventures in Advanced Algorithms: A Guide for Curious Students. 2026. Open educational resource, sepehr.assadi.info/advanced-algorithms.

@book{assadi2026adventures,
  author = {Sepehr Assadi},
  title  = {Adventures in Advanced Algorithms: A Guide for Curious Students},
  year   = {2026},
  note   = {Open educational resource. Licensed under CC BY-NC-SA 4.0},
  url    = {https://sepehr.assadi.info/advanced-algorithms/}
}
© 2026 Sepehr Assadi. Some rights reserved. Released as an open educational resource under a Creative Commons Attribution–NonCommercial–ShareAlike 4.0 International license (CC BY-NC-SA 4.0): you may share and adapt this material for non-commercial purposes, with attribution, provided that any adaptations are distributed under these same terms. Created and maintained by Sepehr Assadi, School of Computer Science, University of Waterloo.