Curso Académico:
2022/23
3379 - Grado en Ingenieria de Redes de Telecomunicación
25232 - Sistemas Distribuidos Avanzados
Información de la Guía Docente
Curso Académico:
2022/23
Centro académico:
337 - Escuela de Ingeniería
Estudio:
3379 - Grado en Ingenieria de Redes de Telecomunicación
Asignatura:
25232 - Sistemas Distribuidos Avanzados
Créditos:
4.0
Curso:
3 y 4
Idiomas de docencia:
Teoría: | Grupo 1: Pendiente |
Prácticas: | Grupo 101: Pendiente |
Seminario: | Grupo 101: Pendiente |
Profesorado:
---
Periodo de Impartición:
Segundo trimestre
Horario:
Presentación
Estamos presenciando una explosión de dispositivos que pueden conectarnos entre sí y conectarse entre sí. Esto ha creado muchas oportunidades para desarrollar aplicaciones de red distribuida. Se trata de aplicaciones donde los datos y la computación se distribuyen entre muchos dispositivos y donde, en principio, todos los dispositivos envían y reciben datos y se benefician del cómputo del grupo. Las aplicaciones van desde la automatización del hogar hasta las criptomonedas. Como complemento a esta evolución, también estamos viendo que muchos servicios informáticos se han trasladado a entornos en la nube. Se trata de entornos computacionales donde la computación se distribuye muchas veces entre decenas de miles de ordenadores para dar servicio a millones de usuarios. Esto sugiere que cualquier profesional de la informática se beneficia al tener una buena comprensión de lo que significa programar en un entorno distribuido.
Los objetivos de este curso son presentar a los estudiantes algunos de los conceptos fundamentales básicos en computación distribuida y estudiar diferentes algoritmos distribuidos. El énfasis estará en los algoritmos en los que los nodos computacionales se comunican de forma asincrónica intercambiando mensajes. Habrá sesiones donde se introducirán algoritmos y el estudiante podrá solidificar los conceptos a través de varios proyectos y ejercicios de programación pequeños y medianos. El curso comienza con la introducción de algoritmos transversales simples y termina con Byzantine Consensus, la base de las implementaciones públicas de blockchain
Competencias asociadas
Competencias transversales
CT3. Aplicar con flexibilidad y creatividad los conocimientos adquiridos y de adaptarlos a contextos y situaciones nuevas.
Competencias específicas
CE7. Dominar los conceptos y principios del funcionamiento interno de un
ordenador así como de la comunicación entre ordenadores, que permita el
análisis y evaluación de estructuras de computadores, incluyendo plataformas
paralelas y distribuidas.
CE11.Solucionar problemas complejos de computación utilizando los principios
y técnicas de los sistemas inteligentes.
Resultados del aprendizaje
RA.CE7.4 Detecta y evalúa los principios y técnicas de la programación
paralela y distribuida.
RA.CE7.5 Analiza las características, estructuras y técnicas asociadas a
los sistemas distribuidos.
RA.CE11.6 Usa algoritmos avanzados considerando aspectos de
distribución y complejidad.
Objetivos de Desarrollo Sostenible
Habrá algunas discusiones sobre el impacto ambiental de los centros de datos y el uso de algunas de las criptomonedas.
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. Un tema a elegir sobre aplicaciones avanzadas del consenso bizantino como Blockchains o Privacidad
Metodología docente
|
Horas de clase
|
|
|
Horas estimadas fuera de clase
|
Actividad de evaluación
|
|
Grupo grande
|
Grupos medianos
|
Grupos pequeños
|
|
|
Preliminares
|
2
|
2
|
|
4
|
|
Olas
|
2
|
1
|
1
|
7
|
|
Elecciones de líderes
|
2
|
1
|
1
|
7
|
|
Árboles de expansión
|
4
|
1
|
1
|
7
|
|
Redes anónimas
|
2
|
1
|
1
|
7
|
|
Tolerancia a fallos/Consenso
|
2
|
1
|
1
|
7
|
|
Consenso bizantino
|
2
|
1
|
1
|
7
|
|
Tema avanzado
|
2
|
1
|
1
|
7
|
|
Examen
|
|
|
|
|
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 seguirá en gran parte el libro “Distributed Algorithms, An Intuitive Approach” de Wan Fokkink.
Otras referencias:
Lindell, Yehuda. Secure multiparty computation. Communications of the ACM 64.1 (2020): 86-96.
Gilad, Y., Hemo, R., Micali, S., Vlachos, G., & Zeldovich, N. (2017, October). Algorand: Scaling byzantine agreements for cryptocurrencies. In Proceedings of the 26th symposium on operating systems principles (pp. 51-68).
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.