Teaching

A list of courses that I have taught at French engineering school (Grande École) ENSEEIHT.

Machine Learning

Responsibilities: Lab instructor, contributed to assignment design, evaluated projects through oral examinations.

Audience: Master’s level.

Description: Statistical learning: regression and classification, linear models, decision trees, model aggregation methods (Bagging, Random Forests, Boosting). Neural networks and introduction to deep learning: definitions, activation functions, multilayer perceptrons, backpropagation algorithms, optimization methods, and regularization. Convolutional neural networks (applications to image classification and object detection).


Applied Mathematics

Responsibilities: Lab instructor, design of lab assignments and projects, project evaluation.

Audience: Undergraduate – Higher school preparatory classes.

Description: Introduction to ordinary differential equations and parameter estimation in linear ODEs.


Scientific Computing

Responsibilities: Tutorial and lab instructor, project supervision and evaluation.

Audience: Bachelor’s level.

Description: Singular Value Decomposition and pseudo-inverse of a matrix with applications. Numerical error analysis (forward and backward errors) and matrix conditioning. Dense matrix factorizations for solving linear systems: LU, Cholesky, and QR methods.


Integration and Measure Theory

Responsibilities: Tutorial instructor, exam grading.

Audience: Bachelor’s level.

Description: Introduction to measure theory, construction of the Lebesgue integral, and presentation of the main integration theorems (dominated convergence, Fubini, etc.).


Optimization and Partial Differential Equations

Responsibilities: Tutorial and lab instructor, exam evaluation.

Audience: Bachelor’s level.

Description: Examples of optimization problems and their mathematical modeling, differentiability, Taylor expansions, convexity, existence and uniqueness of solutions, necessary and sufficient optimality conditions for unconstrained problems, least squares problems, and introduction to Newton and Gauss–Newton methods.
Finite difference methods: consistency, stability, and convergence of numerical schemes for time-evolution problems.


Physics-Constrained Learning

Responsibilities: Lab instructor, assisted in designing lab assignments, evaluated projects through oral examinations.

Audience: Master’s level.

Description: Methods for solving PDEs using machine learning: data-driven approaches, discretization-based high-dimensional methods, and main neural network architectures.


Control Theory

Responsibilities: Lab instructor, project evaluation.

Audience: Master’s level.

Description: The objective of this course is to present techniques for analyzing and solving optimal control problems in nonlinear ordinary differential equations. We consider a dynamical system that can be influenced through a control variable. Solving an optimal control problem consists in determining a trajectory, together with the corresponding control, that allows, for example, reaching a prescribed final target starting from a given initial configuration.


Control Engineering

Responsibilities: Lab instructor, project evaluation.

Audience: Bachelor’s level.

Description: Introduction to control systems: modeling and mathematical formulation of controlled systems, stability of dynamical systems, state-feedback control, and block-diagram modeling in Simulink. Implementation on a Lego Mindstorm SegWay-type robot of a stabilizing state-feedback controller.


Parallel Computing

Responsibilities: Lab instructor.

Audience: Master’s level.

Description: Parallel programming with MPI: point-to-point and collective communications, reduction operations, and optimization strategies. Introduction to GPU programming.


C Programming

Responsibilities: Lab instructor, project evaluation.

Audience: Bachelor’s level.

Description: Introduction to the C language (types, constants, control structures, user-defined types, strings, pointers) and use of subprograms. Overview of modules, make, and dynamic memory allocation in C.


OpenMP

Responsibilities: Lab instructor.

Audience: Master’s level.

Description: Parallel programming with OpenMP: parallel regions, synchronization directives, parallel loops, race conditions, and task-based parallelism.


Concurrent Systems

Responsibilities: Evaluation through oral examinations.

Audience: Master’s level.

Description: Introduction to the main concepts, principles, and mechanisms of concurrent programming. Modeling and design of parallel systems, reasoning about concurrent applications, design and synchronization patterns, and practice of coarse-grained concurrency.


Operating Systems

Responsibilities: Lab instructor, project evaluation.

Audience: Bachelor’s level.

Description: Presentation of fundamental principles and mechanisms in operating system design. Hands-on practice with system programming on Linux: processes, files, signals, and virtual memory. Use of essential tools: C language, shell scripting, and make.