This course presents an overview of machine learning, from its main principles to its implementation by specialized algorithms. Learning principles are presented through a typology of addressed problems and learning frameworks. Concretely, the formulation of a learning problem corresponds to the specification of objectives, data and models. The formulated problem is then solved using an appropriate algorithm. Although most learning principles apply to the various problems addressed, their resolution is based on different algorithms. This course focuses on supervised and unsupervised classification problems. In this context, most frequently used model types (trees, neural networks, rules, bayesian models, etc.) and associated algorithms are introduced from practical case studies. Then, learning paradigms are revisited in order to clarify underlying principles and concepts.