Programa docente base
Concurrencia y Distribución
24 de enero de 2006
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 |
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 |
segundo cuatrimestre |
Departamento |
Informática |
Área de conocimiento |
Área de Lenguajes y Sistemas Informáticos |
|
Lunes |
Martes |
Viernes |
10-11 |
|
|
CD(1) SO6 |
11-12 |
|
|
CD(1) SO6 |
12-13 |
|
CD(2) SO6 |
|
13-14 |
|
CD(2) SO6 |
|
14-15 |
|
|
|
15-16 |
|
|
|
16-17 |
|
|
|
17-18 |
|
|
|
18-19 |
CD 3.2 |
CD(3) SO6 |
|
19-20 |
CD 3.2 |
CD(3) SO6 |
|
Convocatoria |
Fecha |
Hora |
Aula |
Junio |
19.06.06 |
10:00 |
Aula 2.1 |
Septiembre |
13.09.06 |
10:00 |
Aula 2.3 |
Diciembre |
por determinar |
|
|
Presidente |
Prof. Celso Campos Basto |
Secretario |
Prof. Dr. Juan Carlos González Moreno |
Vocal |
Prof. Pedro Cuesta Morales |
Suplente |
Prof. Enrique Barreiro Alonso |
Profesor |
Código |
Crd. |
Tutorías |
Dr. Arno Formella |
3142 |
12 |
1
cuatri.: Mi 11-14, 16-19 |
|
|
|
2
cuatri.: Mi 11-14, 16-19 |
|
|
|
periodo no lectivo: Mi 11-14, 16-19 |
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.5
- 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 aplicaciones simples concurrentes con su control
y sus estructuras de datos de soporte necesarios.
La tareas por cumplir se publican 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.
Esta asignatura participa en el
Programa de promoción del plurilingüismo en la docencia
de la Universidad de Vigo, por eso:
- Las clases de prácticas en el grupo CD(1), viernes, se da
integramente en inglés.
- Se complementa el material docente con documentos en inglés,
entre otros las páginas web acompañantes de la asignatura.
- 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 evaluan a partir de presentaciones de los
trabajos de los alumnos realizados a lo largo del curso.
- Además se ofrece la posibilidad de obtener un bonus hasta 25%
del examen final (en primera convocatoria) mediante presentaciones voluntarias
en las prácticas que se suma una vez haber alcanzado por lo menos un
aprobado.
- Para los demás convocatorias se evalua con un examen que cubre 100%
de la nota final (solo se guarda los puntos del bonus (4) de la primera
convocatoria, si procede).
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.
© 2006, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática