Curso Académico:
2023/24
20072 - PROGRAMACIÓN III: PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA
Información de la asignatura
Código - Nombre:
20072 - PROGRAMACIÓN III: PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA
Titulación:
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
Centro:
350 - Escuela Politécnica Superior
Curso Académico:
2023/24
1. Detalles de la asignatura
1.1. Materia
Programación
1.2. Carácter
800 - Optativa
771 - Obligatoria
1.3. Nivel
800 - Estudios Propios (MECES 2)
771 - Grado (MECES 2)
1.4. Curso
800 - Microtítulo en Programación: 1
771 - Graduado/a en Ciencia e Ingeniería de Datos: 2
1.5. Semestre
Segundo semestre
1.6. Número de créditos ECTS
6.0
1.8. Requisitos previos
No hay
1.9. Recomendaciones
Se recomienda haber cursado las asignaturas "Programación I: Fundamentos de Programación" y "Programación II: Paradigmas de Programación".
1.10. Requisitos mínimos de asistencia
Se plantean dos métodos de evaluación, uno con asistencia obligatoria a clase y otro sin ella. Los estudiantes deberán optar por uno u otro desde el principio del curso y cumplir con los distintos requisitos de evaluación que conlleva cada uno de los modelos, publicados en la presente guía docente.
ITINERARIO CON ASISTENCIA OBLIGATORIA A CLASE - EVALUACIÓN CONTINUA.
La asistencia es obligatoria al menos en un 80%.
ITINERARIO SIN ASISTENCIA OBLIGATORIA A CLASE
La asistencia es muy recomendable aunque no obligatoria.
1.11. Coordinador/a de la asignatura
Alejandro Arbelaez Rodriguez
1.12. Competencias y resultados del aprendizaje
1.12.1. Competencias
CG2 - Diseñar y desarrollar productos y procesos en los distintos ámbitos de la ciencia e ingeniería de datos, por medio de técnicas analíticas, computacionales o experimentales apropiadas.
CG3 - Resolver problemas con iniciativa, creatividad y razonamiento crítico en el ámbito de la ciencia e ingeniería de datos.
CG4 - Aplicar especificaciones, legislación, normas y procedimientos de gestión de seguridad y calidad.
CG5 - Conocer el estado del arte de las tecnologías y las ciencias para permitir la innovación en el ámbito de la ciencia e ingeniería de datos.
CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las
competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio
CB3 - Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética
CB4 - Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado
CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía
CT1 - Trabajar en equipo de forma colaborativa y con responsabilidad compartida.
CT2 - Aprender a realizar y aceptar críticas y fomentar la autocrítica.
CT4 - Organizar su propio autoaprendizaje con un alto grado de autonomía en nuevos métodos y tecnologías, así como adaptarse a nuevas situaciones.
CE3 - Conocer y aplicar los fundamentos de programación y técnicas algorítmicas básicas para diseñar soluciones a problemas, eligiendo el paradigma y los lenguajes de programación más relevantes en el ámbito de la ciencia e ingeniería de datos.
CE4 - Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
CE5 - Conocer, diseñar y utilizar de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de problemas en el contexto de la ciencia e ingeniería de datos.
CE8 - Conocer las características, funcionalidades y estructura de las redes de ordenadores e Internet y los sistemas distribuidos y diseñar e implementar aplicaciones basadas en ellas.
CE11 - Analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas.
1.12.2. Resultados de aprendizaje
Entender los conceptos básicos de programación concurrente y de sistemas distribuidos.
Conocer la base de la multiprogramación.
Comprender los conceptos y el funcionamiento de los programas secuenciales, concurrentes, paralelos y distribuidos, así como entender sus peculiaridades y aplicaciones.
Entender los fundamentos de programación concurrente (como sección crítica y exclusión mutua, sincronización, interbloqueos y tratamiento del deadlock ...).
Conocer los mecanismos de sincronización para memoria compartida (semáforos, monitores y cerrojos-lock).
Entender los fundamentos de tiempo real.
Entender los fundamentos de los sistemas distribuidos y transaccionales.
Comprender los fundamentos del funcionamiento de sistemas con memoria distribuidos mediante paso de mensajes (comunicaciones síncronas-asíncronas bloqueantes y no-bloqueantes, persistentes y
transitorias, simétricas y asimétricas, así como comunicaciones punto a punto, de grupo y sistemas de colas de mensajes).
1.12.3. Objetivos de la asignatura
-
1.13. Contenidos del programa
1. Fundamentos de multiprogramación: programas, procesos e hilos. Programa secuencial, concurrente, paralelo y distribuido.
2. Fundamentos de programación concurrente: sección crítica y exclusión mutua, sincronización, interbloqueos y tratamiento del deadlock.
3. Mecanismos basados en memoria compartida (semáforos, monitores y cerrojos-lock).
4. Fundamentos de programación de sistemas de tiempo real.
5. Fundamentos de sistemas distribuidos y transacciones.
6. Fundamentos del funcionamiento de sistemas con memoria distribuidos mediante paso de mensajes.
1.14. Referencias de consulta
- P. Van Roy, S. Haridi. 2004, Concepts, Techniques, and Models of Computer Programming, MIT Press.
- M. Ben-Ari 2006, Principles of Concurrent and Distributed Programming, 2 Ed., Addison Wesley.
- WELLINGS, A. 2004, Concurrent and Real-Time Programming, 2 Ed., John Wiley
- Richard H. Carver 2005, Modern Multithreading : Implementing, Testing, and Debugging Multithreaded Java and C++/Pthreads/Win32 Programs, Wiley
- Alan Dennis 2002, Multithreading, Manning Publication
2. Metodologías docentes y tiempo de trabajo del estudiante
2.1. Presencialidad
MODALIDAD |
#Horas |
% |
Actividades presenciales |
52 |
35% |
Actividades no presenciales |
98 |
65% |
2.2. Relación de actividades formativas
Actividades presenciales |
#horas |
Clase teóricas en aula |
26 |
Prácticas con medios informáticos |
24 |
actividades de evaluación |
2 |
3. Sistemas de evaluación y porcentaje en la calificación final
3.1. Convocatoria ordinaria
- Hay dos métodos de evaluación para la parte teórica de la asignatura: continua y no continua.
- La asignatura solo dispone de un método de evaluación para la parte práctica
- La nota final de la asignatura se calcula mediante:
- Nota final asignatura: 0.3*Prácticas + 0.7*Teoría
- Para aprobar es obligatorio obtener una nota mayor o igual a 5 puntos, tanto en la parte de teoría como en las prácticas. En caso contrario, la nota final en actas será:
- Calificación: Mín(4.9, 0.3*Prácticas + 0.7*Teoría)
- La nota de teoría para el método de evaluación continua es:
- Nota teoría evaluación continua: 0,5 * prueba1 + 0,5 * prueba2
- La segunda prueba intermedia coincidirá en fecha con la prueba final
- El alumno deberá elegir ese día entre realizar la segunda prueba intermedia o la prueba final. Si realiza la prueba final, se aplicará el método de evaluación no continua y la nota de la prueba será la nota final de teoría.
- La nota correspondiente a la parte de Prácticas se calcula mediante: (n1 + n2)/2 donde n1 y n2 son las calificaciones obtenidas en dos entregas.
- La nota final será diferente a “No evaluado” si ha realizado la prueba final, o alguna de las pruebas intermedias o alguna de las prácticas.
3.1.1. Relación actividades de evaluación
Actividades de evaluación |
% |
Examen Final |
70% |
3.2. Convocatoria extraordinaria
Se aplican las mismas fórmulas y condiciones que en la convocatoria ordinaria con dos salvedades:
- La calificación de teoría corresponde a una única prueba similar a la prueba final de la convocatoria ordinaria.
- La calificación de la entrega de prácticas corresponde a la obtenida en la realización de una única práctica.
Una nota de prácticas de la convocatoria ordinaria se puede conservar (convalidar) sólo para la convocatoria extraordinaria del mismo curso.
3.2.1. Relación actividades de evaluación
Examen 70%
Prácticas 30%
4. Cronograma orientativo
Semana |
Contenido |
Horas presenciales |
Horas no presenciales |
1 |
Introducción. |
2 |
6 |
2 |
Procesos e hilos. |
4 |
4 |
3 |
Monitores y semáforos. |
4 |
4 |
4 |
Sincronización y comunicación. |
4 |
4 |
5 |
Diseño y evaluación de sistemas concurrentes. |
4 |
4 |
6 |
Problemas clásicos de sincronización: exclusión mutua, productor-consumidor, etc. |
4 |
4 |
7 |
Primera prueba intermedia. |
4 |
4 |
8 |
Problemas clásicos de sincronización: exclusión mutua, productor-consumidor, etc.
|
4 |
4 |
9 |
Comunicación síncrona y asíncrona. |
4 |
4 |
10 |
Comunicación síncrona y asíncrona. |
4 |
4 |
11 |
Transacciones y control de concurrencia. |
4 |
4 |
12 |
Java RMI. |
4 |
4 |
13 |
Java RMI. |
4 |
4 |
14 |
Seguridad en sistemas distribuidos. |
2 |
6 |