This note will cover
classic and modern algorithmic ideas that are central to many areas of Computer
Science. The focus is on most powerful paradigms and techniques of how to design
algorithms, and measure their efficiency. The topics will include hashing,
sketching, dimension reduction, linear programming, spectral graph theory,
gradient descent, multiplicative weights, compressed sensing, and others.