Humanistic-AI lab

Desarrollo y despliegue de sistemas de software multicomponente

Asignatura del posgrado en ciencias e ingeniería en computación de la UNAM, semestre 2026-2.
Horario: Lunes y Miércoles de 8:30 a 10:00 Titular: Víctor Mireles - CEIICH-UNAM Contacto: victor.mireles@ceiich.unam.mx

Objetivo del curso:

Familiarizar a los estudiantes con la planeación arquitectónica, el desarrollo y el despliegue continuos de sistemas modernos de software. Esto les permitirá entender el funcionamiento de muchos de los sistemas que están detrás de las aplicaciones que utilizamos todos los días, y les permitirá abordar proyectos de software con estándares modernos de mantenibilidad y escalabilidad.

Temario:

  1. Elementos de un sistema de software en 2025
    1. Front <-> Back <-> Microservicios <-> Datos <-> Modelos
    2. Pruebas unitarias y de integración
    3. Bitácoras
  2. git : el sistema que lo une todo
    1. Despliegue continuo
    2. Integración continua
  3. Contenedores: replicabilidad y orquestación
  4. APIs web:
    1. Rest, HATEOAS y GraphQL
    2. Balanceadores y proxies inversos
    3. Gestores de API
  5. Almacenes de datos
    1. Polling vs Pushing
    2. Gestores de metadatos
    3. Indizadores
    4. Documentos
    5. Llave-valor
    6. Gráficas
    7. Vectores
    8. Objetos
  6. Colas de procesos
  7. Gestores de modelos
  8. Autenticación y autorización

Forma de trabajo:

A lo largo del semestre el docente construirá un sistema prototípico de ingestión de documentos que hará uso de diversos tipos de componentes, incluyendo colas de proceso, modelos de redes neuronales, almacenes de vectores y sistemas de autenticación. Las personas estudiantes desarrollarán a la par un sistema según sus propias inquietudes, y evaluarán cada uno de los componentes vistos en clase para determinar su aplicabilidad y limitaciones.

Evaluación:

Habrá dos sesiones a lo largo del semestre donde las personas estudiantes presentarán sus avances de proyecto, así como una sesión final donde presentarán el sistema funcionando y su arquitectura. Se evaluará que el sistema sea instalable desde uno o más repositorios git, que cuente con pruebas de integración automáticas y que la documentación permita echarlo a andar en una máquina virtual linux.

Prerrequisitos:

Se asume que las personas estudiantes están familiarizadas con git, la línea de comandos de UNIX, bases de datos SQL y algún lenguaje de programación utilizado para desarrollo de aplicaciones web (preferiblemente Python o Java).