This book surveys key algorithm developments between 1990 and 2012, with brief descriptions, a unified pseudocode for each algorithm and downloadable program code. Provides a taxonomy to clarify similarities and differences as well as historical relationships.