Lecture Notes
Together with Gonzalo Muñoz (UChile), we created lecture notes (in Spanish) for a first course in Optimization. The lecture notes cover modeling with linear and integer programming, polyhedral theory, and some non-linear optimization. [Lecture Notes]
Pontificia Universidad Católica de Chile, 2024-present
[ICS2123 - Spring 2024, Fall 2025] Stochastic Models. Undergrad course for engineering students. In the course, we cover fundamental stochastic processes such as Markov chains, Poisson processes, and continuous-time Markov chains, together with the modeling aspects of uncertainty, focusing on operations and engineering systems.
[IMT2117 - Spring 2024] Probability and Algorithms. Course for mathematical and computational engineering students. In the course, we study the use and impact of randomization in the design and analysis of algorithms, and we cover topics such as deviation and concentration, the probabilistic method, random walks and Markov chains, basic information theory, and martingales.
[IMT2260 - Fall 2025] Machine Learning Theory. Undergrad course for Mathematical Engineering and Data Science students. The course covers theoretical aspects of ML, including PAC-learning, VC dimension, unsupervised/supervised learning, and neural networks.
Universidad de O'Higgins, 2020-2023
[MMD4102 - Spring 2021, 2022, 2023] Machine Learning. Undergrad course for Mathematical Modeling students. The course covers theoretical aspects of ML, including PAC-learning, VC dimension, unsupervised/supervised learning, and neural networks.
[IND3701 - Fall 2021, 2022, 2023] Optimization. Undergrad course at UOH for Engineering students, which covers linear and integer programming, polyhedral theory, convexity, and a bit of non-linear optimization.
[MMD4001 - Fall 2021, 2022] Data Science Project. Undergrad course for Mathematical Modeling of Data students.
[IND3202 - Spring 2020, 2021, 2023] Simulation of Complex Systems. Undergrad programs in Industrial Engineering and Mathematical Modeling of Data. This course covers technical aspects of stochastic processes, simulation, and stochastic optimization, together with applications in operations management. The students work on projects using R and Julia/Python.
[IN1009 - Spring 2020] Linear Algebra. A first-year course of the engineering undergrad program. This course covers the basics of vector spaces, matrices, and spectral properties and their applications in engineering and data processing. The computational side is performed in Octave.
London School of Economics and Political Science, 2019-2020
[MA231 - Lent Term 2019, Lent Term 2020] Operational Research Methods. Undergrad course for students of the BSc programs of the Math Department. The course provides an introduction to modeling and optimization techniques such as linear/dynamic programming and classic topics of operations such as flows, matchings, Markov chains, queueing theory, and inventory management (~80 students).
[MA424 - Lent Term 2019, Michelmas Term 2020] Modelling in Operations Research. Graduate course for MSc students of Management, OR & Analytics and Data Science. The course consists of two parts: Simulation and Optimization. In the first part, we cover the classic techniques for MCMC, queueing networks, and variance reduction; in the second part, we focus on modeling and solving using linear/integer optimization (~30 students).
Universidad de Chile, 2017-2018
[MA2001 - Otoño 2018] Multivariate Calculus. Undergrad course at the School of Engineering at UChile for third-semester engineering students that covers topology of Euclidean spaces, differentiability, and integration (~100 students).
[IN3701 - Otoño 2017] Modeling and Optimization. Undergrad course at the Department of Industrial Engineering, UChile, that covers linear and integer programming, polyhedral theory, convexity, and a bit of non-linear optimization (~100 students).
Ecole normale supérieure de Paris, 2015-2016
[Coursera MOOC - Fall 2015, Spring 2016] TA of the Coursera MOOC in Approximation Algorithms I & II (ENS). The course is divided into two parts, introducing classic techniques for designing approximation algorithms for many fundamental problems in combinatorial optimization. Data rounding, dynamic programming, linear programming, and randomization are tools exploited in the course.