El curso introduce los fundamentos de la programación concurrente y su relación con las arquitecturas de cómputo modernas. Se estudian los conceptos de procesos e hilos, su creación, ejecución, sincronización y coordinación, así como los principales mecanismos de comunicación mediante memoria compartida y paso de mensajes. Se abordan problemas propios de la concurrencia, como condiciones de carrera, exclusión mutua, bloqueos y coordinación entre tareas. Finalmente, se introducen los principios de la programación distribuida, considerando la comunicación y coordinación entre procesos que se ejecutan en diferentes nodos, como base para el estudio posterior de los sistemas distribuidos.
- Profesor: José Luis Quiroz Fabián