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
[email protected]
Mercedes Granda [email protected]
Laura Barros
[email protected]
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