This foundational course is an introduction to algorithmic thinking and the mathematics of computer science. Topics include the basics of asymptotic analysis (big Oh, backward substitution, and master method), recursion, and various algorithmic strategies including brute force, decrease-and-conquer, divide-and-conquer, and transform-and-conquer. Programming exercises will help create proficiency in Python Programming language. Emphasis will be placed on understanding underlying mathematics, such as discrete probability, graph theory, and logarithms. Credits: 4