Trabajo final de teoría

El trabajo final de teoría forma parte del sistema de evaluación continua de la asignatura. Consiste en la realización y exposición individual de un tema relacionado con la programación concurrente. Elección del trabajo Debes elegir uno de los temas propuestos (de carácter amplio y genérico para que puedas enfocarlo a tu manera). Comunica tu elección mediante tutoría en UA-Cloud antes del 30 de septiembre. Envía tres propuestas por orden de preferencia para que, en caso de que alguna ya esté asignada, se te pueda adjudicar otra. Si no has elegido trabajo antes de esa fecha, se te asignará uno al azar de entre los disponibles, siempre que hayas optado por la evaluación continua. Entregables La realización del trabajo incluye dos entregables: ...

Tema 0: Presentación de la asignatura

Introducción Bienvenidos a la asignatura de Programación Concurrente. Vivimos en una era en la que prácticamente todos los sistemas informáticos, desde los móviles hasta los grandes servidores, cuentan con procesadores multinúcleo y ejecutan aplicaciones que realizan múltiples tareas al mismo tiempo. La concurrencia no es solo una característica deseable: es una necesidad para aprovechar al máximo los recursos disponibles y para construir software eficiente, seguro y escalable. En este curso aprenderás los fundamentos teóricos y las técnicas prácticas necesarias para diseñar y programar aplicaciones concurrentes. Nos centraremos tanto en los modelos clásicos de concurrencia (procesos, hilos, semáforos, monitores) como en su aplicación en lenguajes y entornos modernos como Java, Python, C y Rust. ...

Tema 1: Conceptos fundamentales

Introducción Concepto de programación concurrente Avances en HARDWARE (procesadores específicos de E/S) Nuevos SO que optimizan uso del procesador (E/S concurrente) Nuevos problemas de sincronización Programación concurrente como disciplina Los primeros sistemas concurrentes fueron los propios sistemas operativos, un solo procesador atendía multiples usuarios Hitos: Aparición del concepto de thread o hilo de ejecución, que permite que los programas se ejecuten más rápido que los que utilizan el concepto de proceso Aparición de lenguajes de propósito general como Java que dan soporte directo a la programación concurrente Aparición de Internet: campo abonado para el desarrollo y la utilización de programas concurrentes. Navegadores, chats, etc…, están programados usando técnicas de programación concurrente Concurrencia (RAE): Acaecimiento o concurso de varios sucesos en un mismo tiempo ...