Programa
Fundamentación
Los profesionales en Estadística necesitan contar con habilidades avanzadas de programación, que les permitan abordar problemas complejos y desarrollar soluciones eficientes y robustas.
La asignatura Programación en Python tiene como propósito consolidar las habilidades de programación de los estudiantes a través del uso del lenguaje Python, ampliamente adoptado en la comunidad científica y en la industria por su versatilidad y su extenso ecosistema de librerías. En esta asignatura, se abordan los principales paradigmas de programación (imperativo, orientado a objetos y funcional), promoviendo un pensamiento computacional flexible y la escritura de programas estructurados, legibles y reutilizables.
La materia también introduce herramientas fundamentales para el análisis de datos en Python, incluyendo el uso de paquetes como NumPy, Polars, Matplotlib, Seaborn, Plotnine, statsmodels y scikit-learn, que resultan fundamentales en el desarrollo de proyectos de análisis, modelización y visualización de datos.
Además, se incorporan prácticas y herramientas que promueven un trabajo colaborativo ágil, robusto y escalable. Estas incluyen el control de versiones con git y el uso de GitHub como plataforma de trabajo colaborativo, el uso de entornos virtuales para aislar dependencias y la incorporación de herramientas que robustecen y automatizan el desarrollo de soluciones basadas en la programación, como el análisis estático, el formateo automático y los flujos de integración continua.
Ofrecida como materia electiva para la Licenciatura en Estadística, esta asignatura consolida las competencias informáticas de los estudiantes y los prepara para afrontar desafíos profesionales que requieren un dominio sólido de la programación y de las herramientas modernas del análisis de datos.
Objetivos
Que los estudiantes logren:
- utilizar Python como lenguaje de programación general para resolver problemas y desarrollar programas eficientes, aplicando los paradigmas imperativo, orientado a objetos y funcional;
- diseñar, implementar y documentar soluciones empleando buenas prácticas y aprovechando el ecosistema de Python para el análisis, modelización y visualización de datos;
- desarrollar proyectos integrales de análisis de datos con flujos de trabajo eficientes, reproducibles y portables; y
- trabajar de forma colaborativa utilizando git, GitHub y otras herramientas que promuevan la calidad, la trazabilidad y el desarrollo sostenible de soluciones basadas en código.
Contenidos
- Unidad 1. Introducción a Python
- Lenguaje Python y su ecosistema. Uso de la interfaz Positron. Sintaxis de Python. Expresiones. Variables y asignaciones. Tipos de datos elementales. Operadores numéricos, de comparación y lógicos. Funciones. Ejecución condicional de código. Bucles definidos y no definidos. Listas, tuplas y diccionarios. Uso de código externo. Módulos y librerías. Librería estándar de Python. Instalación y gestión de librerías. Noción de ambiente virtual. Scripting. Lectura y escritura de archivos de texto plano. Manejo de excepciones.
- Unidad 2. Programación orientada a objetos
- Principios fundamentales. Objetos, clases e instancias. Atributos y métodos. Encapsulamiento. Propiedades públicas y privadas. Atributos y métodos de clase. Herencia. Polimorfismo. Sobrecarga de operadores. Excepciones a medida.
- Unidad 3. Programación funcional
- Principios fundamentales. Funciones como ciudadanos de primera clase. Funciones puras. Funciones anónimas. Closures. Recursión. Funciones de orden superior: map, filter, reduce. Comprensiones como alternativas idiomáticas a map y filter. Aplicación parcial de funciones. Decoradores. Evaluación estricta y no estricta. Evaluación perezosa (lazy) e inmediata (eager). Generadores. Iterables e iteradores
- Unidad 4. Análisis de datos en Python
- Introducción a las Jupyter Notebooks. Trabajo con arreglos multidimensionales en NumPy. Lectura y procesamiento de datos tabulares con Polars. El formato .parquet. Uso de LazyFrames de Polars para el cómputo eficiente con grandes conjuntos de datos. Creación de visualizaciones con Matplotlib, Seaborn y Plotnine. Modelos estadísticos y de aprendizaje automático con statsmodels y scikit-learn. Pipelines de procesamiento de datos en scikit-learn.
- Unidad 5. Herramientas y prácticas para el desarrollo colaborativo
- Git y sus comandos fundamentales: clone, fetch, merge, pull, add, push, checkout, status, branch, merge, log y rebase. GitHub. Herramientas del trabajo colaborativo en GitHub: issues, pull requests y forks. Integración y despliegue continuo con GitHub Actions. Herramientas para el análisis estático y formateo de código. Herramientas modernas para la gestión de ambientes virtuales. Pre-commit. Buenas prácticas en la gestión de datos en proyectos colaborativos. Gestión segura de claves.