Programa Docente de 21714020 - PROGRAMACIÓN CONCURRENTE Y DE TIEMPO REAL
- Idioma
- Modo Impartición
- Nivel Requerido
| Documento | Primer Apellido | Segundo Apellido | Nombre | Categoria | Coordinador |
|---|---|---|---|---|---|
| 26018884L | BARRIONUEVO | GARCIA | ALBERTO | PROFESOR/A SUSTITUTO/A | |
| 49618799W | ROA | CARRILLO | LAZARO | PROFESOR/A SUSTITUTO/A | |
| 45076258F | TOMEU | HARDASMAL | ANTONIO J. | PROFESOR TITULAR DE UNIVERSIDAD | |
| 44029809N | TORRE | MACIAS | JUAN CARLOS DE LA | PROFESOR/A SUSTITUTO/A | |
| 49078940E | VALLE | GOMEZ | KEVIN JESUS | PROFESOR/A AYUDANTE DOCTOR/A |
| Id. Compentencia | Orden | ID | Resultado formación y aprendizaje | Competencia |
|---|---|---|---|---|
| 20107 | 3 | C14 | Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real. | COMPETENCIA ESPECÍFICA |
| ID/ Orden | Resultado |
|---|---|
| 1 |
Capacidad de identificar la concurrencia en un problema y de descomponer el mismo en una serie de tareas concurrentes cooperativas debidamente sincronizadas. |
| 2 |
Conocimiento de las principales primitivas teóricas de control de la exclusión mutua y la sincronización entre entidades concurrentes: variables comunes, cerrojos, semáforos, monitores y memoria transaccional |
| 3 |
Capacidad para desarrollar programas concurrentes en algún lenguaje de programación que dé soporte a la concurrencia, con adecuado control de la exclusión mutua y la sincronización que sea necesaria, en base a las primitivas de control de la concurrencia que el lenguaje proporcione. Capacidad para explotar procesadores multicore. |
| 4 |
Capacidad para desarrollar el intercambio de mensajes entre objetos distribuidos bajo algún middleware como RMI, y también mediante algún API de paso de mensajes como MPJ-Express. |
| 5 |
Conocimiento básico del concepto de aplicación de tiempo real, y de algún API –a nivel puramente descriptivo- que proporcione soporte al mismo en el marco de programación general y bajo la misma filosofía utilizada para la consecución de los anteriores resultados |
| Tipo actividad formativa | Código | Descripción | Horas | Detalle |
|---|---|---|---|---|
| 1 | 01 | Teoría | 24 |
Exposición de los contenidos de la materia con ayuda de diapositivas, y descarga y ejecución de códigos de prueba desde el Campus Virtual ilustrando los conceptos teóricos, junto al desarrollo de soluciones a ejercicios elementales de afianzamiento. |
| 2 | 02 | Prácticas, seminarios y problemas | 12 |
En este grupo de actividad formativa se realizarán las siguientes actividades: SEMINARIO 1: Concurrencia con el Lenguaje C++23. SEMINARIO 2: Memoria Transaccional Software sobre la JVM: Clojure. SEMINARIO 3: El Proyecto Loom: Nuevas Características en el API de Concurrencia de Java. SEMINARIOS DE PROBLEMAS: (8 horas): ejercicios de resolución de problemas de exclusión mutua y sincronización con primitivas de control de la concurrencia a nivel teórico. |
| 3 | 03 | Prácticas de informática | 24 |
El alumno resolverá en las clases de prácticas informáticas un conjunto de ejercicios prácticos de programación de complejidad media. Tales ejercicios se establecerán en las asignaciones de prácticas. |
| 10 | 10 | Actividades formativas no presenciales | 86,00 |
a) Lectura cuidadosa y razonada de las referencias bibliográficas indicadas por los profesores, en particular de las lecturas proporcionadas para cada tema. El estudiante debe ir más allá de la lectura de diapositivas. b) Resolución de los ejercicios y/o problemas de afianzamiento de contenidos propuestos por los profesores. c) Estudio intenso y continuado de la materia durante el semestre. |
| 12 | 12 | Actividades de evaluación | 4,00 |
Exámenes |
Procedimientos de Evaluación
| ID/ Orden | Tarea / Actividad | Medios, Técnicas e Instrumentos | Ponderación |
|---|---|---|---|
| 1 |
Examen Final |
Examen escrito teórico-práctico (papel o plataforma virtual). |
90 % |
| 2 |
Trabajo práctico: Incorporación de bots basados en IA (chatGPT, LLM, etc.) a la práctica de la programación concurrente y de tiempo real como herramienta de optimización de la productividad en la fase de desarrollo. |
Medios: Bots basados en IA de libre acceso. Técnicas: se le proporcionará al alumno una propuesta que deberá resolver en una primera aproximación mediante bots. En una fase posterior, deberá depurar el código generado por la IA y entregarlo conforme a un conjunto de especificaciones. Instrumentos: Elaboración de informe técnico, generación de códigos fuentes y rúbrica de autocorrección. |
10 % |
| ID/ Orden | Temario | Descripción |
|---|---|---|
| 1 |
TEMA 1: PRINCIPIOS ELEMENTALES DE LA CONCURRENCIA |
|
| 2 |
TEMA 2: CREACIÓN Y CONTROL DE THREADS EN JAVA |
|
| 3 |
TEMA 3: MODELOS TEÓRICOS DE CONTROL DE LA CONCURRENCIA CON MEMORIA COMPARTIDA |
|
| 4 |
TEMA 4: CONTROL DE LA CONCURRENCIA EN JAVA CON API ESTÁNDAR |
|
| 5 |
TEMA 5: CONTROL DE LA CONCURRENCIA EN JAVA CON API DE ALTO NIVEL |
|
| 6 |
TEMA 6: MODELOS TEÓRICOS DE CONTROL DE LA CONCURRENCIA CON PASO DE MENSAJES. MPJ-Express PARA Java |
|
| 7 |
TEMA 7: PASO DE MENSAJE INTEROBJETO EN JAVA: EL FRAMEWORK RMI |
|
| 8 |
TEMA 8: SISTEMAS DE TIEMPO REAL. EL API DE TIEMPO REAL PARA JAVA (JRTS) |
|
| 9 |
SEMINARIOS: SEMINARIOS DE PROBLEMAS (8 horas) |
|
| 11 |
PROGRAMA DE PRÁCTICAS: Las prácticas se desarrollarán mediante varias asignaciones de prácticas a desarrollar durante el semestre de docencia, y formarán al alumno en las técnicas de creación y control de hebras concurrentes/paralelas, técnicas para compartir memoria entre hebras, técnicas elementales de paralelismo de datos, medición de tiempos de ejecución y speedup, técnicas de control de exclusión mutua y sincronización, implementación de monitores, técnicas de programación distribuida básica, y técnicas de paso de mensajes. En las clases de prácticas se proporcionará mediante diapositivas o pizarra el soporte conceptual y técnico necesario para que al alumno afronte la asignación con garantías. Igualmente se pondrá a disposición de los alumnos, en aquellas asignaciones donde sea necesario, una carpeta en el Campus Virtual con ejemplos de código, lecturas, etc. que den soporte al desarrollo de la asignación. |