This course is an extension of the process of algorithmic thinking and the mathematics of computer science. Topics include asymptotic analysis, and various algorithmic strategies including transform-and-conquer, dynamic, greedy, amortized analysis, linear and integer programming, randomized, and approximation algorithms. Emphasis will be placed on understanding underlying mathematics, such as discrete probability, statistics, graphs, and set theory. Credits: 4