The goal of this course is to understand the foundations of machine learning as a field, providing the basis to master its many branches and applications. After an introduction about how machines can "learn," the focus will be on a short selection of key algorithms for supervised and unsupervised learning. The students will learn how parametrized function approximators can be used to take decisions, how to update their parametrization to modify their behavior, and how to leverage data and interactions in real-world applications.