The textbook An Introduction to the Analysis of Algorithms by Robert Sedgewick and Phillipe Flajolet overviews the primary techniques used in the mathematical analysis of algorithms.
The textbook Analytic Combinatorics by Philippe Flajolet and Robert Sedgewick enables precise quantitative predictions of the properties of large combinatorial structures.
This course covers the design and implementation of distributed systems. Students will gain an understanding of the principles and techniques behind the design of modern, reliable, and high-performance distributed systems. Topics include server design, network programming, naming, concurrency and locking, consistency models and techniques, security, and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites (e.g., Google, Facebook, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.