next_inactive up previous


Programa docente base
Concurrencia y Distribución

21 de junio de 2004

Datos administrativos de la Universidad

Asignatura

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

Profesorado de la materia

Profesor Código Crd. Tutorías
Arno Formella 3142 12 1 $\scriptstyle \underline{\mathrm o}$ cuatrimestre: Mi 11-14, 16-19
2 $\scriptstyle \underline{\mathrm o}$ cuatrimestre: Mi 11-14, 16-19
periodo no lectivo: Mi 11-14, 16-19

Horarios

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

Temario de la materia

Previo

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.

Objetivos de la materia

Los principales objetivos de la asignatura son:

Temario de Aulas

  1. Introducción
    1. ¿De qué se trata?
    2. Aplicaciones para la programación concurrente y distribuida
    3. Arquitecturas para la programación concurrente y distribuida
    4. Redes e interconexión de redes
    5. Propriedades de programas concurrentes
    6. Procesos y planificadores
  2. Repaso de Java
    1. Java en su versión 1.4
    2. Hilos en Java
    3. Modelo de memoria compartida de Java
    4. Recomendación JSR166 para Java 1.5
    5. Clases para la comunicación entre hilos y ordenadores
  3. Exclusión mutua y atomicidad
    1. Exclusión mutua a bajo nivel
    2. Soporte de hardware para la exclusión mutua
    3. Exclusión mutua a alto nivel
  4. Programas concurrentes
    1. Ejemplos simples
    2. Sistemas productor/consumidor
    3. Estructuras de datos concurrentes
  5. Comunicación y sincronización
    1. Canal de comunicación
    2. Fallos y seguridad de la comunicación
    3. Problema del interbloqueo
    4. Transacciones y control de concurrencia
  6. Sistemas distribuidos
    1. Tiempo y estados globales
    2. Transacciones distribuidas
    3. Memoria compartida distribuida
  7. Patrones de diseño para concurrencia y distribución
    1. Patrones de soporte
    2. Patrones para la sincronización y comunicación
    3. Patrones para el manejo de procesos
  8. Concurrencia en memoria distribuida
    1. El concepto de paso de mensajes
    2. El problema de terminación

Temario de Laboratorio

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.

Referencias bibliográficas

Básicas

  1. D. Lea. Programación Concurrente en Java. Addison-Wesley, ISBN 84-7829-038-9, 2001.
  2. 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.
  3. 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.
  4. G. Coulouris, J. Dollimore, T. Kindberg. Sistemas Distribuidos, Conceptos y Diseño. Addison-Wesley, ISBN 84-7829-049-4, 2001.

Complementarias

  1. K. Arnold et.al. The Java Programming Language. Addison-Wesley, 3rd Edition, 2000.
  2. B. Eckel. Piensa en Java. Prentice Hall, 2002.
  3. M. Ben-Ari. Principles of Concurrent and Distributed Programming. Prentice-Hall 1990.

Método docente

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.

Sistema de evaluación

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.

Información complementaria

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.


next_inactive up previous
© 2004, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática