In this graduate class, UC Davis computer science professor Charles Martel describes advanced methods for the design and analysis of algorithms. He applies these techniques to design fast solutions for a wide range of applications including scheduling, network routing, computational biology, resource management and network design. The techniques studied include dynamic programming, network flows and randomized algorithms. The class also studies how to classify problems as hard via np-completeness theory and how to deal with hard problems using approximation algorithms, special cases, and search techniques.