Traditionally, a computer program is a specification of a set of procedures that encodes a human's knowledge about how the underlying problem should be solved. However, many real-world problems are complex and dynamic, which makes it difficult and infeasible to provision a fixed solution beforehand. Rising to this challenge, machine learning provides a powerful framework to learn a solution from data without explicitly encoding human's intelligence into the program. This provides great flexibility in automatically producing a data-driven and domain-adaptive answer to many difficult tasks that were previously thought impossible.
While there is growing fervor around the potential of machine learning and artificial intelligence, a rigorous theoretical understanding of what machine learning is capable of achieving is often missing in a standard curriculum. Therefore, this course aims to provide a solid foundation to the theoretical aspects of machine learning. We will take a mathematical approach in order to demystify machine learning by capturing it in a mathematical framework, build a solid quantitative foundation by putting it on a rigorous footing, and illustrate how the theoretical foundations can be helpful in guiding practical algorithm design.