5.13.4.4 Computación Paralela y Distribuida (12 horas) [Habilidades AG-C09,AG-C12]

Referencias Bibliográficas: [Williams, 2019,Stroustrup, 2013]

Temas

  1. Seguridad (safety) y vivacidad (liveness):
    1. Condiciones de carrera (race conditions)
    2. Dependencias/precondiciones
    3. Modelos de fallos (fault models)
    4. Terminación
  2. Modelos de programación:
    1. Modelo de actores (actor models)
    2. Modelos procedurales y reactivos
    3. Modelos de programación síncrona/asíncrona
    4. Paralelismo de datos (data parallelism)
  3. Comunicación y coordinación:
    1. Mutexes
    2. Paso de mensajes (message-passing)
    3. Memoria compartida (shared memory)
    4. Cobegin-coend
    5. Monitores
    6. Canales (channels)
    7. Hilos (threads)
    8. Guardas (guards)
  4. std::thread y gestión de hilos.
  5. Mutexes, candados y variables de condición.
  6. Operaciones atómicas y programación sin bloqueo.
  7. std::async y futures.
  8. Patrones de diseño seguros para hilos.
  9. Carreras de datos y prevención de interbloqueos.

Aprendizaje esperado (Learning Outcomes)

  1. Implementar programas concurrentes correctos usando múltiples modelos de programación, como memoria compartida, actores, futuros, construcciones de sincronización y primitivas de paralelismo de datos [Usar]
  2. Usar construcciones de sincronización como métodos monitorizados/sincronizados en un programa simple [Usar]
  3. Usar un modelo de paso de mensajes para analizar un protocolo de comunicación [Evaluar]
  4. Implementar estructuras de datos sin bloqueo usando operaciones atómicas [Usar].
  5. Analizar la seguridad en hilos de algoritmos concurrentes [Evaluar].

Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM