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: | 2º |
Departamento: | Dpto. de Tecnologías de la Información y las Comunicaciones |
Coordinador: | Jorge Lobo |
Profesorado: | Jorge Lobo Windy Rankothge |
Idioma: | Ingles |
Horario: | |
Campus: |
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.
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”.
Cross-disciplinary competences |
Specific competences |
Instrumental
Interpersonal
Systematic
|
|
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
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
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 |
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.