Programa docente base
Concurrencia y Distribución
21 de junio de 2004
|
Código de la materia |
106110505 |
|
Nombre de la materia |
Concurrencia y Distribución |
|
Centro/Titulación |
Escuela Superior de Ingeniería Informática/Ingeniería Informática |
|
Curso |
quinto |
|
Tipo |
obligatoria |
|
Alumnos matriculados |
se sabe al final del periodo de inscripción |
|
Alumnos nuevos |
se sabe al final del periodo de inscripción |
|
Créditos aula/grupo |
3 |
|
Créditos laboratorio/grupo |
3 |
|
Créditos prácticas/grupo |
0 |
|
Número grupos aula |
1 |
|
Número grupos laboratorio |
3 |
|
Número grupos prácticas |
0 |
|
Anual/Cuatrimestral |
Cuatrimestral |
|
Departamento |
Informática |
|
Área de conocimiento |
Área de Lenguajes y Sistemas Informáticos |
|
Profesor |
Código |
Crd. |
Tutorías |
|
Arno Formella |
3142 |
12 |
1
cuatrimestre: Mi 11-14, 16-19 |
|
|
|
2
cuatrimestre: Mi 11-14, 16-19 |
|
|
|
periodo no lectivo: Mi 11-14, 16-19 |
|
Lunes |
Martes |
Miércoles |
Jueves |
Viernes |
|
10-11 |
|
|
|
|
|
|
11-12 |
|
|
Tutorías |
|
|
|
12-13 |
|
CD Prácticas 2 |
Tutorías |
|
|
|
13-14 |
|
CD Prácticas 2 |
Tutorías |
|
|
|
14-15 |
|
|
|
|
|
|
15-16 |
|
|
|
|
|
|
16-17 |
CD Teoría |
|
Tutorías |
|
|
|
17-18 |
CD Teoría |
|
Tutorías |
|
|
|
18-19 |
CD Prácticas 1 |
CD Prácticas 3 |
Tutorías |
|
|
|
19-20 |
CD Prácticas 1 |
CD Prácticas 3 |
|
|
|
Se asume que el alumno tenga un conocimiento básico de la programación
en Java y que sepa manejar un entorno de programación con Java.
Los principales objetivos de la asignatura son:
- conocer los principios y las metodologías de
la programación concurrente y distribuida, sobre todo los conceptos
de sincronización y comunicación entre procesos
- conocer las principales dificultades en realizar programas concurrentes
y distribuidos
- conocer herramientas y modelos
existentes para afrontar la tarea de la
programación concurrente y distribuida
- conocer lenguajes de programación que permiten el uso del concepto de
concurrencia (el principal será Java)
- Introducción
- ¿De qué se trata?
- Aplicaciones para la programación concurrente y distribuida
- Arquitecturas para la programación concurrente y distribuida
- Redes e interconexión de redes
- Propriedades de programas concurrentes
- Procesos y planificadores
- Repaso de Java
- Java en su versión 1.4
- Hilos en Java
- Modelo de memoria compartida de Java
- Recomendación JSR166 para Java 1.5
- Clases para la comunicación entre hilos y ordenadores
- Exclusión mutua y atomicidad
- Exclusión mutua a bajo nivel
- Soporte de hardware para la exclusión mutua
- Exclusión mutua a alto nivel
- Programas concurrentes
- Ejemplos simples
- Sistemas productor/consumidor
- Estructuras de datos concurrentes
- Comunicación y sincronización
- Canal de comunicación
- Fallos y seguridad de la comunicación
- Problema del interbloqueo
- Transacciones y control de concurrencia
- Sistemas distribuidos
- Tiempo y estados globales
- Transacciones distribuidas
- Memoria compartida distribuida
- Patrones de diseño para concurrencia y distribución
- Patrones de soporte
- Patrones para la sincronización y comunicación
- Patrones para el manejo de procesos
- Concurrencia en memoria distribuida
- El concepto de paso de mensajes
- El problema de terminación
En las prácticas en los laboratorios
(y en muchos ejemplos en la teoría) se usa
el lenguaje de programación Java.
Durante las prácticas se soluciona en pequeños grupos
problemas de programación concurrente con el objectivo final
de implementar una aplicación concurrente y distribuida.
La tareas por cumplir se publica a lo largo del curso.
- D. Lea.
Programación Concurrente en Java.
Addison-Wesley, ISBN 84-7829-038-9, 2001.
- J.T. Palma Méndez, M.C. Garrido Carrera, F. Snchez Figueroa,
A. Quesada Arencibia.
Programación Concurrente.
Thomson, ISBN 84-9732-184-7, 2003.
- D. Schmidt, M. Stal, H. Rohnert, F. Buschmann.
Pattern-Oriented Software Architecture, Pattern for
Concurrent and Networked Objects.
John Wiley & Sons, ISBN 0-471-60695-2, 2000.
- G. Coulouris, J. Dollimore, T. Kindberg.
Sistemas Distribuidos, Conceptos y Diseño.
Addison-Wesley, ISBN 84-7829-049-4, 2001.
- K. Arnold et.al.
The Java Programming Language.
Addison-Wesley, 3rd Edition, 2000.
- B. Eckel.
Piensa en Java.
Prentice Hall, 2002.
- M. Ben-Ari.
Principles of Concurrent and Distributed Programming.
Prentice-Hall 1990.
Se imparte la signatura en clases de teoría con transparencias o
portátil con cañón
y pizarra y en clases prácticas con ordenador.
En las clases prácticas se pide participación activa del alumnado
con presentaciones de los trabajos realizados.
Se evalua la asignatura con un examen escrito compuesto por preguntas
cubriendo la teoría y las prácticas.
Dicho examen cubre el 80% de la nota final.
Los 20% restantes se evalua a partir de presentaciones de los
trabajos de los alumnos realizados durante las prácticas.
Además se ofrece la posibilidad de obtener un bonus hasta 25%
del examen final (de Junio) mediante presentaciones voluntarias en
las prácticas.
Se complementa la bibliografía de la asignatura con documentos
que se encuentra en la Internet, sobre todo referiéndose al desarrollo
moderno de Java.
© 2004, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática