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 is on understanding underlying mathematics, such as discrete probability, statistics, graphs and set theory. Credits: 4