We will study the most fun things mankind has invented: games, using some of its most powerful achievements: mathematics and computing. We will discuss ways of formalizing some of the most well-known games and derive the strategies for doing our best against the best possible opponent. Along the way, we will develop some useful optimization algorithms and techniques used in modern computing. We will also be able to tell why the best strategies sometimes need to be random, and why chess is an unsolved game. Finally, we might be able to simulate our way into some very unintuitive claims about political/voting systems.
Prerequisites: Familiarity with Python and some mathematical background: rudimentary probability, familiarity with introductory calculus (derivatives) and some linear algebra (vector and matrix multiplication).