2.5.7 FPL/Computación Paralela y Distribuida
Temas:
Core
- Seguridad (safety) y vivacidad (liveness):
- Condiciones de carrera (race conditions)
- Dependencias/precondiciones
- Modelos de fallos (fault models)
- Terminación
- Modelos de programación:
- Modelo de actores (actor models)
- Modelos procedurales y reactivos
- Modelos de programación síncrona/asíncrona
- Paralelismo de datos (data parallelism)
- Propiedades:
- Propiedades basadas en orden:
- Conmutatividad
- Independencia
- Propiedades basadas en consistencia:
- Atomicidad
- Consenso
- Control de ejecución:
- Espera asíncrona Async await
- Promesas (promises)
- Hilos (threads)
- Comunicación y coordinación:
- Mutexes
- Paso de mensajes (message-passing)
- Memoria compartida (shared memory)
- Cobegin-coend
- Monitores
- Canales (channels)
- Hilos (threads)
- Guardas (guards)
- Futuros (futures)
- Soporte del lenguaje para paralelismo de datos como forall, desenrollado de bucles (loop unrolling), map/reduce
- Efecto de los modelos de consistencia de memoria en la semántica del lenguaje y la generación correcta de código
- Interfaces de Programación de Aplicaciones de Transferencia de Estado Representacional (REST APIs)
- Tecnologías y enfoques: computación en la nube (cloud computing), computación de alto rendimiento, computación cuántica, computación ubicua
- Sobrecarga del paso de mensajes
- Granularidad del programa para una explotación eficiente de la concurrencia
- Concurrencia y otros paradigmas de programación (por ejemplo, funcional)
Aprendizaje esperado (Learning Outcomes):
Core:
- Explicar por qué los lenguajes de programación no garantizan la consistencia secuencial en presencia de condiciones de carrera (data races) y qué deben hacer los programadores como resultado [Explicar]
- 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 [Implementar]
- Usar un modelo de paso de mensajes para analizar un protocolo de comunicación [Usar]
- Usar construcciones de sincronización como métodos monitorizados/sincronizados en un programa simple [Usar]
- Modelar dependencia de datos usando construcciones de programación simples que involucran variables, lectura y escritura [Implementar]
- Modelar dependencia de control usando construcciones simples como selección e iteración [Implementar]
- Explicar cómo las APIs REST integran aplicaciones y automatizan procesos [Explicar]
- Explicar beneficios, limitaciones y desafíos relacionados con la computación distribuida y paralela [Explicar]
Generado por Ernesto Cuadros-Vargas , Sociedad Peruana de Computación-Peru, basado en el modelo de la Computing Curricula de IEEE-CS/ACM