This course covers the theoretical and practical foundations of mathematical optimization applied to artificial intelligence. It addresses convex and non-convex optimization, classical methods (gradient, Newton, Lagrange), and KKT optimality conditions. Modern stochastic techniques (SGD, Adam) and bio-inspired metaheuristics (genetic algorithms, PSO) are studied for machine learning applications. The course also covers large-scale distributed optimization on GPU/clusters and regularization for deep neural networks. Practical applications in machine learning, deep learning, and combinatorial optimization are presented throughout the program

This course introduces the fundamental concepts and techniques of Machine Learning, a key area of Artificial Intelligence. Students will learn how computers can automatically learn from data to make predictions or decisions without being explicitly programmed.

The course covers supervised and unsupervised learning methods, including algorithms such as linear regression, decision trees, k-nearest neighbors, support vector machines, and neural networks. Practical sessions (TD/TP) will focus on implementing these algorithms and analyzing real datasets using modern tools.

By the end of the course, students will understand the main principles of machine learning and be able to design, train, and evaluate learning models for various applications.

This course is designed  for first-year Master's students specializing in Artificial Intelligence and its Applications (IAA).

It provides a comprehensive introduction to the fundamental concepts and techniques of data analysis. The focus of the course will be on equipping students with the skills required to collect, clean, analyze, and visualize data effectively. Emphasis will be placed on applying statistical and machine learning methods to draw meaningful insights and support decision-making, with practical applications across various domains.

Cette matière couvre des concepts fondamentaux et des techniques avancées en conception et analyse d'algorithmes en approfondissant les structures de données, les algorithmes de recherche et de tri, ainsi que des approches comme la programmation dynamique et les algorithmes gloutons. La matière fournit aussi une compréhension approfondie de la complexité algorithmique, en mettant l’accent sur les techniques d’analyse, l’importance de la complexité pour l’optimisation, et les méthodes pour prouver la correction des algorithmes