Design and implementation of modern algorithms. Stresses application and project based development of algorithmic techniques. Emphasis on algorithmic ideas that have had substantial impact in the real world, including approximation, randomization, hashing, streaming, spectral techniques, optimization, and search. Project-driven: Several homework assignments as well as a larger student-driven course project researching, designing, and implementing algorithms for a substantive problem with real world applications. Prerequisite: Computer Science 201 and and Computer Science 230 or equivalent.