This course builds on knowledge of elementary algorithm analysis gained in Data Structures to further analyze the efficiency of algorithms for sorting, searching, and selection. The course will also introduce algorithm design techniques.