Bash, Contenedores, GitHub y Python de Alto Rendimiento
Taller Intersemestral Comunitario (Verano 2025)
Código Rápido y Replicable
¿Qué vas a aprender en este curso?
En un contexto donde la inteligencia artificial transforma el desarrollo de software, entender y optimizar los aspectos subyacentes del código se vuelve esencial. Esta capacidad no solo mejora el rendimiento, sino que también brinda una ventaja competitiva. En este taller aprenderemos cómo lograr una mayor reproducibilidad en nuestros proyectos usando:
- Bash
- Python
- GitHub
- Contenedores
Sesiones, actividades y temario
Vamos a tener 10 sesiones de 2 horas para dar un total de 20 horas de clase. Se darán presencialmente en [REDACTED] y se transmitirán en vivo por YouTube. En caso de ser necesario podemos tener sesiones de asesoría adicional. Los temas a ver son:
- Sesión 1. Introducción al Supercómputo
- ¿Qué es el supercómputo?
- ¿Qué es Linux?
- El sistema de archivos de Linux
- Comandos básicos de Linux
- Editores de texto en la terminal
- Metacaracteres
- Conexión a máquinas remotas mediante
ssh
- Sesión 2. Introducción a las Utilerías de Linux
- Filtros en Linux
- Utilerías básicas
-
AWKy otras utilerías - Concatenación de Comandos
- Introducción a la ciencia de datos desde la terminal
- Sesión 3. Escritura de scripts en Linux
- Permisos de archivos
- Variables
- Argumentos en un script
- Estructuras de flujo y de control
- Cron y automatización desde terminal
- Sesión 4. Git y GitHub
- Git
- Sistemas de control de versiones
- Commit y otros comandos básicos
- Ramas
- Reverts
- GitHub
- Creación de una cuenta en GitHub
- Clonación de repositorios remotos
- Milestones, issues y herramientas para el manejo de proyectos
- Colaboración remota con GitHub
- READMEs y el lenguaje Markdown
- Git
- Sesión 5. Manejo de paqueterías de Python con Conda
- ¿Para qué entornos para Python?
- Instalación de Anaconda y Miniconda
- Creación de entornos con Conda
- Importación y exportación de entornos con conda
- Estructura de proyectos con Python
- Sesión 6. Introducción a los contenedores con Apptainer
- Contenedores y máquinas virtuales
- Importación de contenedores y OCI
- Diferencias entre Docker y Apptainer
- Escritura de archivos de definición
- Creación de contenedores
- Ejecución de scripts en contenedores
- Sesión 7. Python para aplicaciones de terminal
- Buenas prácticas de codificación
- Comentarios en Python
- Docstrings en Python
- Automatic compliance
- Usando varios archivos con Python
- Argparse para la creación de interfaces de línea de comandos
- Buenas prácticas de codificación
- Sesión 8. Temas selectos de Python de Alto Rendimiento I. Numba y cómputo en paralelo
- Sesión 9. Temas selectos de Python de Alto Rendimiento II. PyOMP y memoria compartida
- Sesión 10. Temas selectos de Python de Alto Rendimiento II. MPI for Python y memoria no compartida
Conocimientos previos
Se requieren conocimientos básicos de programación. Particularmente escritura de objetos y de funciones. Es recomendable tener experiencia con línea de comandos, pero no es necesario.
Evaluación
Se requiere entregar un proyecto final que utilice todas las herramientas vistas en el curso. Es decir:
- El código debe de estar almacenado en un repositorio de GitHub
- Debe de ejecutarse mediante un contenedor de Apptainer
- Debe ser programado en Python con sus dependencias claramente identificadas en un entorno tipo Conda.
Una rúbrica detallada se les hará llegar antes de la entrega del proyecto. Se evaluará como aprobado/no aprobado.
Metodología de enseñanza
Se impartirá mediante instrucción directa los temas a revisar. Por la naturaleza intensiva del curso, se dejará tarea para complementar y reafirmar los conocimientos vistos en clase que servirán para construir el proyecto.
Bibliografía
Bash
Aprender Bash es aprender un sistema de magia con reglas estrictas. Tiene una curva de aprendizaje imponente, pero que una vez que entiendes la magnitud de su poder se vuelve inseparable de tu día a día. En cuanto a sitios web puedes revisar:
- Bash Academy. Blogs detallados con respecto a la funcionalidad de Bash con diagramas.
- OverTheWire Wargames: Bandit. Te permite aprender Linux usando la computadora de alguien más y varios comandos conforme se van necesitando.
- Devhints cheatsheet. Explica los conceptos más básicos que puedes llegar a necesitar para empezar a escribir y comprender scripts de Bash.
En cuanto a libros puedes leer manuales que se compartirán en Classroom.
Python
Llegando de cero puedes consultar:
Un buen libro a consultar es
Con respecto a lo visto en el curso consulta la siguiente lista que se irá actualizando y no tiene ningún orden en particular
Git y GitHub
Hay varios tutoriales en línea con los que puedes aprender Git y que suelen hablar de su uso con GitHub por ejemplo:
GitHub en particular tiene documentación y entrenamientos para su plataforma.
Contenedores
Consulta la documentación oficial.