UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
ANX-PR/CL/001-02 GUÍA DE APRENDIZAJE ASIGNATURA Programacion concurrente y avanzada CURSO ACADÉMICO - SEMESTRE 2015-16 - Segundo semestre
GA_61CI_615000305_2S_2015-16
Código PR/CL/001
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Datos Descriptivos Nombre de la Asignatura
Programacion concurrente y avanzada
Titulación
61CI - Grado en Ingenieria de Computadores
Centro responsable de la titulación
E.T.S. de Ingenieria de Sistemas Informaticos
Semestre/s de impartición
Cuarto semestre
Materia
Programacion (ob)
Carácter
Obligatoria
Código UPM
615000305
Nombre en inglés
Concurrent And Advanced Programming
Datos Generales Créditos
6
Curso
2
Curso Académico
2015-16
Período de impartición
Febrero-Junio
Idioma de impartición
Castellano
Otros idiomas de impartición
Requisitos Previos Obligatorios Asignaturas Superadas El plan de estudios Grado en Ingenieria de Computadores no tiene definidas asignaturas previas superadas para esta asignatura.
Otros Requisitos El plan de estudios Grado en Ingenieria de Computadores no tiene definidos otros requisitos para esta asignatura.
Conocimientos Previos Asignaturas Previas Recomendadas Taller de programacion Fundamentos de programacion Algoritmica y complejidad Programacion orientada a objetos Estructura de datos
Otros Conocimientos Previos Recomendados Conocimietos sobre plataformas de desarrollo como Visual Studio o Eclipse
GA_61CI_615000305_2S_2015-16
1
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
GA_61CI_615000305_2S_2015-16
Código PR/CL/001
2
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Competencias CB5 - Conocimiento de la estructura, funcionamiento e interconexión de los sistemas informáticos, así como los fundamentos de su programación. CC14 - Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real CT7 - Aprendizaje autónomo: El estudiante debe responsabilizarse de su propio aprendizaje, lo que le lleva a utilizar procesos cognitivos de forma estratégica y flexible, en función del objetivo de aprendizaje
Resultados de Aprendizaje RA70 - Utiliza entornos y herramientas de desarrollo RA199 - dado un problema susceptible de ser paralelizable, escribe en un lenguaje de alto nivel una solución a dicho problema teniendo en cuenta el número de unidades de procesamiento existentes de manera local RA198 - Dado un problema en el que intervienen procesos concurrentes, escribe en un lenguaje de alto nivel una solución a dichos problema RA74 - Comprende los elementos de lenguajes de programación de distintos paradigmas RA197 - Dado un problema en el que intervienen procesos concurrentes, determina la mejor estrategia para la comunicación/sincronización de dichos procesos RA196 - Dado un objetivo de aprendizaje a corto plazo, identifica de forma autónoma los conocimientos y habilidades necesarios y establece un plan para lograrlo. El plan integra la selección de fuentes de información, métodos de búsqueda de la información oportuna, y criterios para sintetizar la información recopilada. RA200 - Dado un problema con cálculo distribuido, establece la topología y configuración de los nodos computacionales y escribe una solución distribuida en un lenguaje de alto nivel para dicho problema
GA_61CI_615000305_2S_2015-16
3
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Profesorado Profesorado Nombre
Despacho
e-mail
Perez Martinez, Jorge Enrique (Coordinador/a)
D-4415
[email protected]
Tutorías L - 11:00 - 13:00 L - 17:00 - 18:00 X - 13:00 - 14:00 X - 16:00 - 18:00
Nota.- Las horas de tutoría son orientativas y pueden sufrir modificaciones. Se deberá confirmar los horarios de tutorías con el profesorado.
GA_61CI_615000305_2S_2015-16
4
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Descripción de la Asignatura La asignatura está enfocada a tratar varios paradigmas de programación avanzados tal cual son la programación concurrente, programación paralela y programación distribuida. El desarrollo de la asignatura implica el estudio previo de los estudiantes de los materiales indicados por el profesor. Posteriormente, en el aula, se realiza una evaluación individual formativa sobre los contenidos estudiados para, a continuación, y una vez despejadas las posibles dudas, pasar a realizar ejercicios prácticos sobre los contenidos estudiados. La "piedra de toque" de la metodología docente es el "aprender haciendo". Evaluación continuada y formativa, evaluación entre iguales y coevaluación, recogida de indicios de aprendizaje mediante e-portofolio y puesta en escena del aprendizaje c entradoen el estudiante. Los estudiantes utilizarán lenguajes de programación de última generación tal como C#, Scala y X10 para afrontar programación de sistemas altamente paralelos y distribuidos. Dichos lenguajes estarán alojados en plataformas como VisualStudio (.NET) o Eclipse.
Temario 1. Programación Concurrente 1.1. Introducción 1.2. Exclusión mutua 1.3. Herramientas para gestionar la concurrencia 1.4. Interbloqueos 2. Programación Paralela 2.1. Programando con hebras. Soluciones clásicas 2.2. Programación básica paralela (for y foreach paralelo) 2.3. Programación asíncrona 2.4. Tareas vs Hebras. Patrones de programación 2.5. Programación con LINQ 2.6. Programación paralela con PLINQ 2.7. Colecciones Concurrentes (queues, stacks, bags, dictionaries) 2.8. Introducción a Rx
GA_61CI_615000305_2S_2015-16
5
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
3. Programación Distribuida 3.1. Llamadas a métodos remotos (RPC) 3.2. 3.2. Programación distribuida con Remoting 3.3. Modos de vida en los objetos remotos 3.4. Limitaciones de los objetos remotos 3.5. La magia de los middleware 3.6. Aspect-Oriented Programming 3.7. Incorporación de AOP en los middleware actuales 3.8. Otros paradigmas: Actores 3.9. Otros paradigmas: Map/Reduce 4. Modelado en UML 4.1. Subestados paralelos 4.2. Diagramas de actividad 4.3. Clases activas 4.4. Diagramas de despliegue 4.5. Paso síncrono y asíncrono de mensajes
GA_61CI_615000305_2S_2015-16
6
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Cronograma Horas totales: 64 horas
Horas presenciales: 64 horas (41%)
Peso total de actividades de evaluación continua: 100%
Peso total de actividades de evaluación sólo prueba final: 100%
Semana Semana 1
Actividad Prensencial en Aula
Actividad Prensencial en Laboratorio
Presentación de la asignatura
Otra Actividad Presencial
Actividades Evaluación
Preguntas cortas y ejercicios breves sobre los contenidos abordados (RA196, RA197, RA198)
Duración: 02:00 LM: Actividad del tipo Lección Magistral
Duración: 01:00
Introducción a la programación concurrente y a la exclusión mutua
TG: Técnica del tipo Trabajo en Grupo Evaluación continua
Duración: 01:00
Actividad presencial
AC: Actividad del tipo Acciones Cooperativas Semana 2
Herramientas para gestionar la concurrencia (I)
problemas a resolver con las herramientas estudiadas (RA197,RA198)
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 3
Herramientas para gestionar la concurrencia (II)
problemas a resolver con las herramientas estudiadas (RA197,RA198)
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 4
Herramientas para gestionar la concurrencia (III)
problemas a resolver con las herramientas estudiadas (RA197,RA198)
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 5
Herramientas para gestionar la concurrencia (IV)
problemas a resolver con las herramientas estudiadas (RA197,RA198)
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 6
Semana 7
Programación básica paralela
introducción a Visual Studio
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Programación con tareas y hebras
Prácticas con tareas y hebras
Duración: 02:00 AC: Actividad del tipo Acciones Cooperativas
Duración: 02:00 PL: Actividad del tipo Prácticas de Laboratorio
Resolución en laboratorios de problemas relacionados con tareas y hebras en programación paralela (RA70, RA74, RA199) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
GA_61CI_615000305_2S_2015-16
7
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE Semana 8
Programación ccon PLINQ
Prácticas con PLINQ
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Código PR/CL/001 Uso de PLINQ para resolver problemas de paralelismo (RA70, RA74, RA199) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 9
Colecciones concurrentes
Prácticas con Rx
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Practica en laboratorio sobre colecciones concurrentes (RA70, RA74, RA199) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 10
Programación distribuida con RPC Duración: 02:00 AC: Actividad del tipo Acciones Cooperativas
Prácticas con RPC Duración: 02:00 PL: Actividad del tipo Prácticas de Laboratorio
Practica en laboratorio sobre RPC (RA70, RA74, RA200) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 11
Ciclo de vida de los objetos remotos Duración: 02:00 AC: Actividad del tipo Acciones Cooperativas
Prácticas con objetos remotos Duración: 02:00 PL: Actividad del tipo Prácticas de Laboratorio
Practica en laboratorio sobre objetos remotos (RA70, RA74, RA200) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 12
Middleware
Prácticas con middleware
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Practica en laboratorio sobre middleware (RA70, RA74, RA200) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 13
Programación Orientada a Aspectos en Middlewares Duración: 02:00 AC: Actividad del tipo Acciones Cooperativas
Prácticas con AOP Duración: 02:00 PL: Actividad del tipo Prácticas de Laboratorio
Practica con AOP y middleware (RA70, RA74, RA200) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 14
Otros paradigmas: Actors, Map/Reduce
Prácticas con Actor y Map/Reduce
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Practica con Actor y Map/Reduce (RA70, RA74, RA200) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
Semana 15
Modelado en UML
Prácticas con StarUML
Duración: 02:00
Duración: 02:00
AC: Actividad del tipo Acciones Cooperativas
PL: Actividad del tipo Prácticas de Laboratorio
Practica con StarUML (RA70, RA74) Duración: 00:00 TG: Técnica del tipo Trabajo en Grupo Evaluación continua Actividad presencial
GA_61CI_615000305_2S_2015-16
8
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE Semana 16
Código PR/CL/001 Recuperaciones de actividades no superadas (RA70, RA74, RA196, RA197, RA198,RA199,RA200) Duración: 04:00 TI: Técnica del tipo Trabajo Individual Evaluación continua Actividad presencial
Semana 17
Evaluación final (RA70, RA74, RA196, RA197, RA198,RA199,RA200) Duración: 04:00 TI: Técnica del tipo Trabajo Individual Evaluación sólo prueba final Actividad presencial
Nota.- El cronograma sigue una planificación teórica de la asignatura que puede sufrir modificaciones durante el curso. Nota 2.- Para poder calcular correctamente la dedicación de un alumno, la duración de las actividades que se repiten en el tiempo (por ejemplo, subgrupos de prácticas") únicamente se indican la primera vez que se definen.
GA_61CI_615000305_2S_2015-16
9
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Actividades de Evaluación Semana
Descripción
Duración
Tipo evaluación
Técnica evaluativa
Presencial
Peso
Nota mínima
Competencias evaluadas
1
Preguntas cortas y ejercicios breves sobre los contenidos abordados (RA196, RA197, RA198)
01:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CT7, CC14
2
problemas a resolver con las herramientas estudiadas (RA197,RA198)
02:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
3
problemas a resolver con las herramientas estudiadas (RA197,RA198)
02:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
4
problemas a resolver con las herramientas estudiadas (RA197,RA198)
02:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
5
problemas a resolver con las herramientas estudiadas (RA197,RA198)
02:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CC14
7
Resolución en laboratorios de problemas relacionados con tareas y hebras en programación paralela (RA70, RA74, RA199)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CC14
8
Uso de PLINQ para resolver problemas de paralelismo (RA70, RA74, RA199)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CC14
9
Practica en laboratorio sobre colecciones concurrentes (RA70, RA74, RA199)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
10
Practica en laboratorio sobre RPC (RA70, RA74, RA200)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
11
Practica en laboratorio sobre objetos remotos (RA70, RA74, RA200)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
12
Practica en laboratorio sobre middleware (RA70, RA74, RA200)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
13
Practica con AOP y middleware (RA70, RA74, RA200)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
14
Practica con Actor y Map/Reduce (RA70, RA74, RA200)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
CB5, CC14
15
Practica con StarUML (RA70, RA74)
00:00
Evaluación continua
TG: Técnica del tipo Trabajo en Grupo
Sí
5%
5 / 10
16
Recuperaciones de actividades no superadas (RA70, RA74, RA196, RA197, RA198,RA199,RA200)
04:00
Evaluación continua
TI: Técnica del tipo Trabajo Individual
Sí
30%
5 / 10
CT7, CB5, CC14
17
Evaluación final (RA70, RA74, RA196, RA197, RA198,RA199,RA200)
04:00
Evaluación sólo prueba final
TI: Técnica del tipo Trabajo Individual
Sí
100%
5 / 10
CT7, CB5, CC14
Criterios de Evaluación La fecha límite para elegir solo evaluación final será a las dos semanas de comenzar las clases; es decir, el día 15 de febrero a las 14 horas. La evaluación es contínua, acumulativa y formativa. Los estudiantes tienen que entregar al menos el 85% de las tareas encomendadas. No todas las tareas suman nota a la calificación final. Habrá tanto pruebas individuales como de grupo. Para las
GA_61CI_615000305_2S_2015-16
10
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
pruebas de grupo, y puesto que la estrategia formativa es el aprendizaje cooperativo, la nota del grupo será la del componente del mismo que responda a las cuestiones planteadas. La evaluación es formativa en cuanto que se discute en el aula las soluciones aportadas por los estudiantes sin intervención formativa previa del profesor. Es una vez puestas de manifiesto las carencias formativas del estudiante en un determinado tema que previamente ha estudiado y evaluado, cuando el profesor puede proceder a explicar aquellos aspectos que no han quedado claro o conceptos mal interpretados. Para la evaluación final el estudiante tendrá que superar una única prueba que valore los conocimientos que tiene de la asignatura.
GA_61CI_615000305_2S_2015-16
11
UNIVERSIDAD POLITÉCNICA DE MADRID E.T.S. de Ingenieria de Sistemas Informaticos
PROCESO DE SEGUIMIENTO DE TÍTULOS OFICIALES ANX-PR/CL/001-02: GUÍA DE APRENDIZAJE
Código PR/CL/001
Recursos Didácticos Descripción
Tipo
Observaciones
Programación Concurrente
Bibliografía
Jorge Enrique Pérez Martínez. Editorial Rueda, 1990
https://moodle.upm.es/titulaciones/oficiales/course/view.php?id=6674
Recursos web
alojamiento moodle UPM de la asignatura
Laboratorio 4401
Equipamiento
Laboratorio para realizar las prácticas de la asignatura
https://msdn.microsoft.com/library/dd831853.aspx
Recursos web
Página principal del entorno Visual Studio
http://www.eclipse.org/papyrus/
Recursos web
Página principal de la herramienta Papyrus sobre eclipse
http://staruml.io/
Recursos web
Página principal de la herramienta StarUML 2
Otra Información La competencia transversal que desarrolla y evalúa la asignatura es el Aprendizaje Autónomo (CT7): "El
estudiante debe responsabilizarse de su propio aprendizaje, lo que le lleva a utilizar procesos cognitivos de forma estratégica y flexible, en función del objetivo de aprendizaje" . El nivel de desempeño es el uno y se describe como: "Dado un objetivo de aprendizaje a corto plazo, identifica de forma autónoma los conocimientos y habilidades necesarios y establece un plan para lograrlo. El plan integra la selección de fuentes de información, métodos de búsqueda de la información oportuna, y criterios para sintetizar la información recopilada". El proceso de desarrollo y evaluación ocurre durante la primera semana del curso. Se trata de que caractericen y establezcan diferencias entre la programación concurrente, paralela y distribuida. Para ello deben establecer un plan de aprendizaje indicando fuentes documentales, criterios de búsqueda y finalización de la misma así como síntesis de la información. Deben resolver el problema propuesto. A lo largo del curso se enfrentan a problema similares aunque no se pide tanto rigor en la descripción del proceso de aprendizaje. La evaluación de esta competencia supone un 5% de la calificación final de la asignatura.
GA_61CI_615000305_2S_2015-16
12