Curso Académico:
2018/19
3375 - Grado en Ingeniería en Sistemas Audiovisuales
25209 - Sistemas Distribuidos Avanzados
Información de la Guía Docente
Curso Académico:
2018/19
Centro académico:
337 - Escuela de Ingeniería
Estudio:
3375 - Grado en Ingeniería en Sistemas Audiovisuales
Asignatura:
25209 - Sistemas Distribuidos Avanzados
Créditos:
4.0
Curso:
4 y 3
Idiomas de docencia:
Teoría: | Grupo 1: Pendiente |
Prácticas: | Grupo 101: Pendiente |
Seminario: | Grupo 101: Pendiente |
| Grupo 102: Pendiente |
Profesorado:
Jorge Lobo
Periodo de Impartición:
Segundo trimestre
Horario:
Presentación
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 trasladando 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.
Competencias asociadas
Cross-disciplinary competences
|
Specific competences
|
Instrumental
-
Capacity to analyze problems
-
Capacity for abstraction
-
Organization and planning
Interpersonal
-
Comprehension of existing solutions or already built by others
-
Collaborative work in software development
Systematic
-
Creation of well-structured solutions
-
Re-use of known techniques to solve new problems
-
Creation of new ideas
|
-
An understanding of distributed computational models and algorithms.
-
Capacity to design new distributed algorithms.
-
Capacity to program such algorithms in a distributed computing environment.
-
Ability to understand how these algorithms can be used for writing reliable and fault tolerant systems.
-
Ability to understand how these algorithms can be used to parallelize computation.
|
Prerrequisitos
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”.
Contenidos
1. Preliminares:
- motivación: Enrutamiento / Broadcasting / Multicasting / Skype/File Sharing / Tolerancia a fallos, ZooKeeper , Hadoop – Procesamiento de lenguaje natural
- Nuestro modelo computacional : Panorama general de la computación distribuida, modelo computacional asíncrono mediante el paso de mensajes , Relojes , propiedades “safety” y “liveness”
- Nociones de complejidad computacional en algoritmos distribuidos
2. Ondas
3. elecciones de Líder
4. árboles de expansión (spanning trees)
5. Redes anónimas
6. Consenso/Tolerancia a fallas
7. Aplicaciones avanzadas como Tablas de hash distribuidas a ser seleccionada durante el trimestre
8. MapReduce
Metodología docente
|
Classroom hours
|
|
|
Estimated Off-classroom hours
|
Assessment Activity
|
|
Large group
|
Medium-size groups
|
Small groups
|
|
|
Preliminaries
|
2
|
2
|
|
4
|
|
Waves
|
2
|
1
|
1
|
7
|
|
Leader elections
|
2
|
1
|
1
|
7
|
|
Spanning trees
|
4
|
1
|
1
|
7
|
|
Anonymous networks
|
2
|
1
|
1
|
7
|
|
Distributed hashing
|
2
|
1
|
1
|
7
|
|
Fault tolerance/
Consensus
|
2
|
1
|
1
|
7
|
|
MapReduce
|
2
|
1
|
1
|
7
|
|
Midterm
|
|
|
|
|
2
|
Final
|
|
|
|
|
2
|
Total
|
18
|
10
|
8
|
60
|
4
|
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á:
- Tareas 30%
- Examen a mitad de termino 30%
- Examen final 40%
Es necesario obtener por lo mínimo la mitad de la nota total en las tareas para pasar el curso
Bibliografía y recursos de información
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.