Curso 2015-16

Sistemas Distribuidos Avanzados

Titulación: Código: Tipo:
Grado en Ingeniería Informática 23106 Optativa
Grado en Ingeniería Telemática 23110 Optativa
Grado en Ingeniería en Sistemas Audiovisuales 23114 Optativa

 

Créditos ECTS: 4 Dedicación: 100 horas Trimestre:

 

Departamento: Dpto. de Tecnologías de la Información y las Comunicaciones
Coordinador: Jorge Lobo
Profesorado:

Jorge Lobo

Windy Rankothge

Idioma:

Ingles

Horario:
Campus:

 

Presentación de la assignatura

Estamos siendo testigos de una explosión en el uso de dispositivos que facilitan conexiones entre los usuarios y entre los mismos dispositivos. Esto ha creado muchas oportunidades para desarrollar aplicaciones computacionales distribuidas. Estas son aplicaciones donde los datos y la computación se distribuyen entre muchos dispositivos y en el que, en principio, todos los dispositivos envían y reciben datos y se benefician de la computación del grupo. Como complemento a esta evolución también estamos viendo cómo muchos servicios informáticos se están moviendo a entornos de tipo nube. Estos son entornos computacionales donde el cálculo se distribuye en muchos casos en decenas de miles de ordenadores para servir a millones de usuarios. Estas aplicaciones hacen ahora casi esencial para cualquier profesional de la informática tener una buena comprensión de lo que significa programar en un entorno distribuido.

 Los objetivos de este curso son introducir a los estudiantes a algunos de los conceptos fundamentales en computación distribuida y estudiar diferentes algoritmos distribuidos. Se hará hincapié en algoritmos en los que los nodos de cómputo se comunican de forma asíncrona intercambiando mensajes. Habrá clases magistrales donde se introducirán los algoritmos. Los estudiantes podrán consolidar los conceptos a través de varios proyectos de programación de pequeña o mediana envergadura y tareas escritas.

 

Prerequisitos

Los estudiantes deben tener conocimiento de los conceptos básicos de grafos, tales como los tratados en "Álgebra Lineal y Matemática Discreta", conocer la notación de complejidad asintótica usada en el análisis del algoritmos al nivel que se estudia en "Fundamentos de programación", así como los conocimientos de programación cubiertos en "Estructuras de Datos y Algoritmos ", y uno de los cursos: " Desarrollo de aplicaciones distribuidas "o" Protocolos y aplicaciones distribuidas”.

 

Competencias

Cross-disciplinary competences

Specific competences

Instrumental

  1. Capacity to analyze problems

  2. Capacity for abstraction

  3. Organization and planning

Interpersonal

  1. Comprehension of existing solutions or already built by others

  2. Collaborative work in software development

Systematic

  1. Creation of well-structured solutions

  2. Re-use of known techniques to solve new problems

  3. Creation of new ideas

 

 

  1. An understanding of distributed computational models and algorithms.

  2. Capacity to design new distributed algorithms.

  3. Capacity to program such algorithms in a distributed computing environment.

  4. Ability to understand how these algorithms can be used for writing reliable and fault tolerant systems.

  5. Ability to understand how these algorithms can be used to parallelize computation.

 

Evaluación

Habrá un examen a mitad del trimestre, un examen final y tareas de programación y ejercicios escritos.

 

La distribución de la nota final será: 

 

Es necesario obtener por lo mínimo la mitad de la nota total en las tareas para pasar el curso

 

Contenidos

1. Preliminares:

2. Ondas

3. Deadlocks / detección de Terminación

4. elecciones de Líder

5. árboles de expansión (spanning trees)

6. Redes anónimas

7. sincronización

8. Tablas de hash distribuidas

9. MapReduce

 

Metodología

 

Classroom hours

   

Estimated Off-classroom hours

Assessment Activity

 

Large group

Medium-size groups

Small groups

   

Preliminaries

2

2

 

4

 

Waves

2

1

1

7

 

Dead locks/

Termination

2

1

1

7

 

Leader elections

2

1

1

7

 

Spanning trees

2

1

1

7

 

Anonymous networks

2

1

1

7

 

Distributed hashing

2

1

1

7

 

Syncrhonization

2

1

1

7

 

MapReduce

2

1

1

7

 

Midterm

       

2

Final

       

2

Total

18

10

8

60

4

 

Recursos

El curso se seguira en gran parte el libro “Distributed Algorithms, An Intuitive Approach” by Wan Fokkink.

Otras referencias:

Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, and Hari Balakrishnan. 2003. Chord: a scalable peer-to-peer lookup protocol for internet applications. IEEE/ACM Trans. Netw. 11, 1 (February 2003), 17-32.

Jeffrey Dean and Sanjay Ghemawat. 2008. MapReduce: simplified data processing on large clusters. Commun. ACM 51, 1 (January 2008), 107-113.