Evento: Summer School and Workshop on Optimization and Operator Learning
Fechas del Pre-pre-curso: Del 6/01/2026 al 17 de febrero de 2026.
Frecuencia: Martes y Jueves (15:00-17:00 hrs).
Ubicación: Zoom Video Communications.
Descripción del curso¶
Este curso intensivo de 10 días está diseñado para preparar a los asistentes para la pre-escuela de verano principal (Summer School). El objetivo es proporcionar una base sólida en los conceptos fundamentales y las herramientas de programación en Python que son esenciales para la computación científica y el análisis de datos. Las sesiones serán prácticas, enfocadas en el uso de librerías estándar de la industria y la implementación de algoritmos básicos.
Cubriremos los fundamentos de la programación en Python, el manejo de arreglos numéricos de alto rendimiento con NumPy, la visualización de datos con Matplotlib y una introducción práctica a los conceptos de aprendizaje automático como el descenso de gradiente y la regresión lineal.
Audiencia¶
Este pre-pre-curso está dirigido a estudiantes de pregrado, investigadores jóvenes y profesionales en las áreas de ciencia, tecnología, ingeniería y matemáticas (STEM) que planean asistir a la pre-escuela de verano y desean fortalecer sus habilidades de programación para el análisis numérico.
Prerrequisitos¶
No se requiere experiencia previa en programación. Sin embargo, se asume una familiaridad con conceptos matemáticos básicos a nivel universitario, como cálculo y álgebra lineal. La motivación para aprender a programar es el requisito más importante.
Objetivos de Aprendizaje¶
Al finalizar este pre-pre-curso, los participantes serán capaces de:
Escribir y ejecutar scripts básicos en Python.
Utilizar Jupyter Notebooks para la computación interactiva.
Manejar y manipular arreglos multidimensionales con NumPy y PyTorch.
Crear visualizaciones y gráficos de datos 2D con Matplotlib.
Comprender el concepto de descenso de gradiente.
Implementar un modelo simple de regresión lineal desde cero.
Preparar su entorno de computación para los temas avanzados de la pre-escuela de verano.
Software y Materiales¶
Laptop personal: Obligatoria para todas las sesiones.
Software: Se solicitará a los participantes que instalen el administrador de paquetes uv antes del inicio del curso. Esto proporcionará todas las herramientas necesarias, incluyendo Python, JupyterLab, NumPy, SciPy, PyTorch y Matplotlib.
Materiales del curso: Se proporcionarán notebooks de Jupyter y otros materiales a través de un repositorio público.
Carpeta compartida: Enlace a Dropbox.
Grabación de las sesiones: Lista de reproducción.
Disponibilidad de ejemplos: Programas ejemplos del libro.
Repositorios de ejemplos complementarios: Python-Programming / Cpp-Programming.
Ejemplos del libro Numerical Python: Cuadernos.
Lectura sobre EDOs: https://
numerics .ovgu .de /teaching /numnn /skript .pdf Apuntes: PDFs
Curso de Optimización con ejemplos en Python/MATLAB: Lista de reproducción.
Facilitadores¶
Este pre-pre-curso será facilitado por un equipo de tres entusiastas de las matemáticas y la programación:
Carlos: Matemático organizador.
Matihus: Estudiante de matemática, quien recientemente presentó un póster sobre su investigación.
Karen: Estudiante de matemática con un gran interés en la aplicación de la tecnología al análisis numérico.
La idea de este curso nació de conversaciones informales y el deseo compartido de hacer la computación científica más accesible para nuestros compañeros. ¡Esperamos aprender juntos!
Programa preliminar¶
| Fecha | Sesiones | Actividad de Programación | Referencias |
|---|---|---|---|
| Antes del 6/01 | Sesión 0: Instalación y Ambiente | Instalar uv y familiarizarse con JupyterLab. Crear un notebook que importe NumPy, SciPy y PyTorch para verificar sus versiones. Ejercicios. | Aznarán (2026) Aznarán (2026) Aznarán (2026) |
| 6/01/2026 | Fundamentos: de Python a NumPy | Cargar un dataset (CSV), calcular estadísticas (media, std), y visualizarlo con Matplotlib. Implementar multiplicación de matrices y resolver un sistema lineal con NumPy. | Gaddis (2023) Wei-Bing Lin et al. (2022) Sundnes (2020) Nagar (2018) |
| 9/01/2026 | Optimización I: Descenso de Gradiente (GD) | Implementar GD desde cero para minimizar una función (ej. Rosenbrock) y comparar variantes (batch, mini-batch). Entorno virtual. | Beck (2023) Grippo & Sciandrone (2023) Scientific Computing (2026) |
| Fin de semana | Proyecto 1: Regresión Lineal | Implementar regresión lineal usando solo NumPy y luego comparar con una implementación básica en PyTorch (sin nn.Linear). | Johansson (2024) |
| 13/01/2026 | Optimización II: Acelerando la Convergencia | Añadir Momento y una tasa de aprendizaje adaptativa (ej. AdaGrad/RMSProp) a la implementación de GD. Lecturas de optimización. JuMP.jl. PuLP. Función cuadrática Chapter 7 Section 2 | |
| 16/01/2026 | Optimización III: SciPy y ODEs | Resolver un problema de optimización no lineal con scipy.optimize.minimize. Adicionalmente, resolver una Ecuación Diferencial Ordinaria (ODE) simple con scipy.integrate.solve_ivp. Tesis gradiente conjugado. Gradiente conjugado. | |
| 20/01/2026 | Optimización IV: Métodos de 2º Orden | Implementar el Método de Newton y comparar su convergencia con los métodos de 1er orden. Proyectos. Estadística Básica para Ciencias de la Salud. Estadística. ¿Qué es el Deep Learning? | |
| 23/01/2026 | Optimización V: con Restricciones (KKT) | Resolver un problema de asignación de recursos (ej. cartera de inversión) usando las condiciones KKT. | |
| Fin de semana | Proyecto 2: Optimizador Avanzado | Implementar un optimizador como Adam desde cero, encapsulándolo en una clase. | |
| 27/01/2026 | Semana de Repaso y Consultas 1 | (Opcional) Taller de revisión de código y profundización en la teoría de la dualidad lagrangiana. | |
| 29/01/2026 | Semana de Repaso y Consultas 2 | (Opcional) Taller de depuración de código (pdb) y preparación para el bloque de Deep Learning. | |
| 03/02/2026 | Deep Learning I: Intro a PyTorch | Comprender tensores y autograd. Construir un Perceptrón Multicapa (MLP) en PyTorch y entrenarlo en el dataset MNIST. | |
| 6 de febrero | Deep Learning II: Modelos de Regresión | Implementar y entrenar un modelo de regresión logística con PyTorch para un problema de clasificación. | |
| 10 de febrero | Proyecto Final: Ideación y Propuesta | Entregable: Propuesta de proyecto de 1 página (objetivos, dataset y métricas de éxito). | |
| 13 de febrero | Proyecto Final: Desarrollo y Mentoría | Hito: Prototipo funcional del modelo. Sesiones de mentoría para resolver dudas. | |
| 17 de febrero | Proyecto Final: Demo Day | Presentación: Demo de 5 minutos del proyecto, resultados y lecciones aprendidas. |
- Aznarán, C. (n.d.). Introduction to Scientific Computing with Python 🎪. Retrieved January 13, 2026, from https://scientificpython.readthedocs.io
- Aznarán, C. (n.d.). Python para computación científica. Retrieved January 13, 2026, from https://cpp-review-dune.github.io/tutorial/python.html
- Aznarán, C. (n.d.). Introducción a la programación en lenguaje Python. Retrieved January 13, 2026, from https://numerical-analysis-2024.github.io/tutorial/intro_python/python.html
- Gaddis, T. (2023). Starting Out with Python (6th ed.). Pearson Education, Inc.
- Wei-Bing Lin, J., Aizenman, H., Cartas Espinel, E. M., Gunnerson, K., & Liu, J. (2022). An Introduction to Python Programming for Scientists and Engineers (1st ed.). Cambridge University Press.
- Sundnes, J. (2020). Introduction to Scientific Programming with Python. Springer International Publishing. 10.1007/978-3-030-50356-7
- Nagar, S. (2018). Introduction to Python for Engineers and Scientists: Open Source Solutions for Numerical Computation. Apress. 10.1007/978-1-4842-3204-0
- Beck, A. (2023). Introduction to Nonlinear Optimization: Theory, Algorithms, and Applications with Python and MATLAB, Second Edition (2nd ed.). Society for Industrial. 10.1137/1.9781611977622
- Grippo, L., & Sciandrone, M. (2023). Introduction to Methods for Nonlinear Optimization. Springer International Publishing. 10.1007/978-3-031-26790-1
- of Scientific Computing, P. C. C. (n.d.). Material. Retrieved January 13, 2026, from https://numerics.ovgu.de/pec3/document/index.php
- Johansson, R. (2024). Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib. Apress. 10.1007/979-8-8688-0413-7