Download M1: Programación concurrente: Programación de la
Document related concepts
no text concepts found
Transcript
M1: Programación concurrente: Programación de la asignatura Master de Computación Facultad de Ciencias Universidad de Cantabria. Profesores: José M. Drake drakej@unican.es Mercedes Granda grandam@unican.es Laura Barros barrosl@unican.es I.- Página WEB de la asignatura: http://www.ctr.unican.es/asignaturas/MC_ProCon/index.html II.- Objetivos generales de la asignatura • Conocer y practicar la programación concurrente, para tener capacidad de identificar las ventajas y problemas que presenta, en contraste con la programación secuencial. • Formación para concebir, especificar, diseñar, implementar y verificar aplicaciones informáticas en las que se utilice programación concurrente. • Conocer los conceptos básicos sobre concurrencia, sus ventajas y las patologías que conlleva, así como los recursos y primitivas de sincronización que históricamente se han definido para realizar una programación segura. • Conocer y practicar la programación concurrente con los lenguajes de programación Java y ADA. III.- Capacidades que van ser adquiridas en el curso. • Saber integrar la concurrencia en el proceso de desarrollo de una aplicación, como medio de simplificar su estructura interna, mejorar sus respuestas y hacerla mas robusta frente a fallos. • Ser capaz de identificar las características de una aplicación informática por las tiene ventajas ser concebida, diseñada o implementada utilizando programación concurrente. • Conocer y saber elegir entre las diferentes alternativas para implementar una aplicación concurrente: utilizando un lenguaje de programación, los recursos de los sistemas operativos, o un middleware de distribución. • Tener capacidad de diseñar e implementar una aplicación concurrente utilizando los lenguajes de programación Java y ADA. IV.- Programa de la asignatura. Módulo I: Conceptos y recursos para la programación concurrente (6 horas) Tema I.1: Motivación de la programación concurrente. Tema I.2: Procesos y threads. Tema I.3: Problemas específicos de la programación concurrente. Tema I.4: Patologías de la programación concurrente. Tema I.5: Sincronización basada en intercambio de mensajes. Tema I.6: Sincronización basada en memoria compartida. Módulo II: Programación concurrente con Java (4 horas) Tema II.1: Threads en Java. Tema II.2: Sincronización de threads Java. Modulo III: Formalización de la concurrencia: Redes de Petri (6 horas) Tema III.1: Redes de Petri: definición, formalización y ejecución Tema III.2: Redes de Petri: propiedades y métodos de análisis Tema III.3: Redes de Petri: modelado de sistemas concurrentes Tema III.4: Extensiones de las redes de Petri: temporización. Módulo IV: Programación concurrente con Ada (6 horas) Tema IV.1: Tareas Ada. Tema IV.2: Sincronización entre tareas Ada Tema IV.3: Interacción asíncrona entre tareas Ada Trabajo tutorado: Desarrollo de un ejemplo común (8 horas) - Desarrollo dirigido de un ejemplo Java: Red Ferroviaria. - Desarrollo dirigido de un ejemplo Ada: Sopa de letras. Trabajo personal: Desarrollo de un ejemplo personal en Java o Ada. (10 horas) V.- Metodología docente. La docencia se desarrolla a través de sesiones de docencia presencial y del trabajo dirigido que realiza el alumno individualmente. Docencia presencial: (Su calendario se describe en “Calendario y Horario”) 1.- Desarrollo conceptual de la asignatura: Utilizando documentos PowerPoint se desarrollará de forma ordenada los conceptos e ideas que constituyen el cuerpo de la asignatura. (Los documentos en formato .pdf pueden descargarse de la página WEB de la asignatura) 2.- Aplicación de los conceptos a ejemplos: Su finalidad es doble: a través de los ejemplos se muestra la aplicación de los conceptos a casos reales, y a través de su ejecución en el laboratorio se aprenderá a utilizar las herramientas. Trabajo dirigido: Consiste en un proyecto de complejidad similar a los ejemplos desarrollados en clase, que será asignado individualmente a cada alumno. El alumno debe resolverlo fuera del horario presencial aplicando los conceptos que se irán desarrollando en él. VI.- Evaluación de la docencia. La evaluación de la asignatura se realizará con calificaciones en el rango 0-10. Se realizará a través de la presentación al profesor de la solución de proyecto individual que se le ha asignado. El criterio de evaluación es: (Haber obtenido la funcionalidad de proyecto: 3.0 puntos; Defensa de la solución propuesta: 3.0 puntos; Idoneidad de los medios utilizados:2.0 puntos y Originalidad y elegancia de la solución: 2.0 puntos) La evaluación se realizará antes del día 8-2-08 (1 semana después de haber terminado el curso). VII. Bibliografía La docencia de la asignatura se realizará siguiendo los textos: - A. Burn y G. Davies.: "Concurrent Programming" Addison Wesley, 1993. - Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea: “Java Concurrency in Practice” Addison-Wesley Professional (2006) - A. Burn y A. Welling: "Concurrency and Real-Time Programming in Ada". Cambridge, (2007). VIII. Calendario Tema I : Introducción a la programación concurrente (J.M. Drake) Octubre; Miercoles 9, Jueves 10 y Martes 14 (de 12:00 a 14:00) Tema II: Programación concurrente en Java (J.M. Drake) Octubre: Miércoles 15 , Jueves, 16 (de 12:00 a 14:00) Tema III: Formalización de la concurrencia (M. Granda) Octubre: Lúnes 20, Miércoles 22 y Jueves 23 ( de 11:30 a 13:30) Trabajo dirigido: Red Ferroviaria con Java (L. Barros) Octubre: Martes 21 y viernes 24 (de 12:00 a 14:00) Tema IV: Programación concurrente con Ada (J.M. Drake) Octubre: Lúnes 27, Martes 28 y Miércoles 29. (de 12:00 a 14:00) Trabajo dirigido: Sopa letras con Ada (L. Barros) Octubre: Jueves 30 y viernes 31 (de 12:00 a 14:00) Trabajo personal: Mes de Noviembre