Concurrencia


Grado en Ingeniería Informática/ Grado en Matemáticas e Informática/ Doble Grado en Ingeniería Informática y ADE
Universidad Politécnica de Madrid

Descripción

Este curso pretende familiarizar al alumno con los sistemas software concurrentes — es decir, aquellos en los que diferentes procesos ejecutan simultáneamente interactuando entre sí y de manera potencialmente indeterminista — y proporcionarle herramientas con las que desarrollar software concurrente seguro.

Las primeras semanas se centran en los mecanismos básicos que posibilitan la creación de procesos, la comunicación y la sincronización, prestando especial atención a los problemas de ejecución que pueden surgir. La segunda parte de la asignatura proporciona una metodología orientada a la construcción de aplicaciones concurrentes que garanticen una serie de propiedades esenciales. En esta parte se desarrolla un ejercicio práctico por parejas usando el lenguaje Java.

Los contenidos detallados y las normas de la asignatura se encuentran en las guías de aprendizaje: GII, GMI, GII-ADE.
Las fechas para las pruebas de evaluación continua de la asignatura en este semestre son:

Recordatorio: Examen extraordinario de teoría online mañana 2 de julio, a partir de las 15:00h. en moodle-exam.upm.es

Hola a tod@s.
Os recuerdo que mañana, a partir de las 15:00h. comenzará el examen online de Concurrencia de la convocatoria extraordinaria de julio, en el servicio moodle-exam.upm.es.
A las 15:00h comenzará la prueba correspondiente al primer parcial. Alrededor de las 16:30h (aprox.) comenzará la prueba correspondiente al segundo parcial. Ambas pruebas consistirán de una parte de preguntas de respuesta simple y un ejercicio de desarrollo con contenidos y distribución de puntos similares a los exámenes de otros años que ya conocéis. En la parte de test de respuesta simple cada pregunta mal contestada restará una puntuación equivalente al valor total de la pregunta dividido por el numero de respuestas posibles. Debido a limitaciones de la plataforma moodle, cada pregunta del test contará con una opción explícita para "dejar en blanco" que no cuenta para la división antes mencionada.
Dispondréis de 30 minutos para la parte de test. En la parte de desarrollo os pediremos que respondáis al ejercicio en una hoja de papel que luego firmaréis y subiréis en una foto en la que debería verse también una identificación (DNI, carné de la UPM, etc.). Para esta parte dispondréis de 30 minutos + 5 extra para hacer y subir la foto incluida. Tened en cuenta que si dedicáis más de 30 minutos al ejercicio puede que no consigáis subir la imagen a tiempo.
La primera parte (test de respuesta simple) del primer parcial comenzará a las 15:00h. La segunda parte (desarrollo) comenzará a las 15:45h.
Los tiempos para la prueba del segundo parcial serán los mismos y esta no comenzará antes de las 16:30h. Como en las anteriores ocasiones, atenderemos dudas durante el examen mediante un equipo en MS Teams al cual os podéis unir con el código 41ulzuk.
Hasta mañana y suerte para todos.

Cambios en el curso debidos a COVID-19 new

20.03.2020

Además de clases "enlatadas", vamos a empezar a hacer pruebas de directos. Inicialmente, usaremos MS Teams y grupos más o menos pequeños. La primera prueba se realizará este lunes 23 de marzo con alumnos del grupo G4F2M.

13.03.2020

De acuerdo con las últimas recomendaciones recibidas desde Rectorado, nuestro objetivo es continuar con la docencia del curso ajustándonos lo más posible al calendario original del semestre. Para ello se van a potenciar los recursos de autoevaluación, los materiales disponibles en red y se sustituirán algunas clases por vídeos.

Con la información de que disponemos ahora (13.3.2020) relativa a una interrupción de la actividad académica presencial hasta el 26.3.2020, las medidas inmediatas se concretan en lo siguiente:

Profesorado

Horas de tutoría

  profesor   tutorías fijas   tutorías con cita previa
  Julio Mariño      miércoles 10:00 – 12:00      martes 15:00 – 17:00   
  miércoles 15:00 – 17:00   
  Guillermo Román      martes 10:00 – 12:00      viernes 10:00 – 12:00   
  viernes 12:00 – 14:00   
  Ángel Herranz      miércoles 12:30 – 13:30   
  viernes 09:00 – 10:00   
  miércoles 15:30 – 17:30   
  viernes 10:00 – 12:00   

Contacto

Para contactar con los profesores de la asignatura lo más sencillo es usar la dirección de correo Para anuncios de la asignatura, consultas que puedan ser resueltas por otros compañeros, etc., disponemos del foro en la dirección Todos los alumnos son suscritos a este foro de manera automática.

Cronograma

Vamos a usar este espacio como bitácora de las actividades realizadas y planificación de las futuras. Los materiales asociados con cada sesión se irán enlazando desde aquí.

Sesión 1: Presentación

Sesión 2: Creación de procesos en Java

Sesión 3: Puesta en común E1 (Creación de procesos en Java)

Sesión 4: Exclusión mutua y situaciones de carrera

Sesión 5: Puesta en común E2 (Provocar una situación de carrera)

Sesión 6: Exclusión mutua con espera activa I

Sesión 7: Exclusión mutua con espera activa II

Sesión 8: Exclusión mutua con espera activa III

Sesión 9: Puesta en común E3 (exclusión mutua de dos procesos con espera activa)

Sesión 10: Semáforos

Sesión 11: Puesta en común E4 / Sincronización por condición

Sesión 12: Recursos compartidos

semana ATHENS/TryIt

Sesión 13: Puesta en común E5 y E6

Sesión 14: Recursos compartidos II

Sesión 15: Problemas de especificación y repaso para el 1er parcial

Sesión 16: Puesta en común de E7

semana santa

Sesión 17: Monitores I

Sesión 18: Monitores II

Sesión 19: Monitores III

Sesión 20: Simulacro de examen y repaso para el examen

Sesión 21: Presentación de las prácticas y dudas para el parcial

1er parcial: 29.abril.2020, 15:00

Sesión 22: Concurrencia mediante paso de mensajes

Sesión 23: Puesta en común de E8 (opcional) y E9

Sesión 24: Communicating Sequential Processes en Java: JCSP

semana 14
sesión actual

Sesión 25: Técnicas avanzadas con JCSP

Sesión 26: Tutorías sobre la práctica y E10

sesiones futuras...
semana 15

Sesión 27: Puesta en común de E10

Sesión 28: Tutorías: repaso para el examen y dudas de prácticas

exámenes

Segundo parcial: 29 de mayo

Materiales

Slides de Guillermo Román usadas en el grupo 4F2M

Lecturas, código de apoyo, etc.

Ejercicios prácticos

Entregas para (auto)evaluación continua

El documento ejercicios-cortos.zip contiene los enunciados de los ejercicios que han de entregarse cada semana junto con el código de apoyo. (Acceso directo al PDF del cuadernillo.)

Las entregas de todos los ejercicios prácticos se realizan a través de la URL http://vps142.cesvima.upm.es/login.

-- -- --
 Ejercicio   Descripción   Entrega 
 Ejercicio 1   Creación de threads en Java    domingo 9 febrero 15:00 
 Ejercicio 2   Provocar una situación de carrera   domingo 16 febrero 15:00 
 Ejercicio 3   Garantizar exclusión mutua con espera activa   domingo 1 de marzo 23:59 
 Ejercicio 4   Garantizar exclusión mutua con semáforos    domingo 8 de marzo 15:00 
 Ejercicios 5 y 6   Almacén de un dato con semáforos y
 Almacén de varios datos con semáforos 
 sábado 21 de marzo 15:00  
Ejercicio 7  Especificación de un recurso compartido   miércoles 1 de abril 15:00 
Ejercicio 9  Multibuffer con Monitores    miércoles 5 de mayo 23:59  
Ejercicio 10  Multibuffer con paso de mensajes    martes 19 de mayo 23:59 

Enunciados de examen

Ejercicios extra

En este documento disponéis de una serie de problemas para razonar y programar tomando las entregas cortas como punto de partida. Se trata de material totalmente experimental que estamos creando por primera vez en este semestre. Actualmente contiene propuestas sobre las entregas 1 y 2. Su realización es voluntaria y de momento no está prevista su entrega ni su revisión en clase.

Software