Skip to article content

Pre-pre-school

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:

Software y Materiales

Facilitadores

Este pre-pre-curso será facilitado por un equipo de tres entusiastas de las matemáticas y la programación:

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!

an+1=anηf(an)\mathbf{a}_{n+1}=\mathbf{a}_n-\eta\nabla f(\mathbf{a}_n)

Programa preliminar

FechaSesionesActividad de ProgramaciónReferencias
Antes del 6/01Sesión 0: Instalación y AmbienteInstalar 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/2026Fundamentos: de Python a NumPyCargar 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/2026Optimizació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 semanaProyecto 1: Regresión LinealImplementar regresión lineal usando solo NumPy y luego comparar con una implementación básica en PyTorch (sin nn.Linear).Johansson (2024)
13/01/2026Optimización II: Acelerando la ConvergenciaAñ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/2026Optimización III: SciPy y ODEsResolver 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/2026Optimización IV: Métodos de 2º OrdenImplementar 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/2026Optimización V: con Restricciones (KKT)Resolver un problema de asignación de recursos (ej. cartera de inversión) usando las condiciones KKT.
Fin de semanaProyecto 2: Optimizador AvanzadoImplementar un optimizador como Adam desde cero, encapsulándolo en una clase.
27/01/2026Semana 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/2026Semana 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/2026Deep Learning I: Intro a PyTorchComprender tensores y autograd. Construir un Perceptrón Multicapa (MLP) en PyTorch y entrenarlo en el dataset MNIST.
6 de febreroDeep Learning II: Modelos de RegresiónImplementar y entrenar un modelo de regresión logística con PyTorch para un problema de clasificación.
10 de febreroProyecto Final: Ideación y PropuestaEntregable: Propuesta de proyecto de 1 página (objetivos, dataset y métricas de éxito).
13 de febreroProyecto Final: Desarrollo y MentoríaHito: Prototipo funcional del modelo. Sesiones de mentoría para resolver dudas.
17 de febreroProyecto Final: Demo DayPresentación: Demo de 5 minutos del proyecto, resultados y lecciones aprendidas.
References
  1. Aznarán, C. (n.d.). Introduction to Scientific Computing with Python 🎪. Retrieved January 13, 2026, from https://scientificpython.readthedocs.io
  2. 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
  3. 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
  4. Gaddis, T. (2023). Starting Out with Python (6th ed.). Pearson Education, Inc.
  5. 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.
  6. Sundnes, J. (2020). Introduction to Scientific Programming with Python. Springer International Publishing. 10.1007/978-3-030-50356-7
  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
  8. 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
  9. Grippo, L., & Sciandrone, M. (2023). Introduction to Methods for Nonlinear Optimization. Springer International Publishing. 10.1007/978-3-031-26790-1
  10. of Scientific Computing, P. C. C. (n.d.). Material. Retrieved January 13, 2026, from https://numerics.ovgu.de/pec3/document/index.php
  11. Johansson, R. (2024). Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib. Apress. 10.1007/979-8-8688-0413-7