Consulta de Guías Docentes



Curso Académico: 2023/24

20072 - PROGRAMACIÓN III: PROGRAMACIÓN CONCURRENTE Y DISTRIBUIDA


Information of the subject

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.7. Idioma

Español

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

 


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.7. Idioma

Español

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