Consulta de Guies Docents



Curs Acadèmic: 2022/23

3379 - Grau en Enginyeria de Xarxes de Telecomunicació

25232 - Sistemes Distribuïts Avançats


Informació de la Guia Docent

Curs acadèmic:
2022/23
Centre acadèmic:
337 - Escola d'Enginyeria
Estudi:
3379 - Grau en Enginyeria de Xarxes de Telecomunicació
Assignatura:
25232 - Sistemes Distribuïts Avançats
Crèdits:
4.0
Curs:
3 i 4
Idiomes de docència:
Teoria: Grup 1: Pendent
Pràctiques: Grup 101: Pendent
Seminari: Grup 101: Pendent
Professorat:
---
Periode d'Impartició:
Segon trimestre
Horari:

Presentació

Estem presenciant una explosió de dispositius que poden connectar-nos entre si i connectar-se entre si. Això ha creat moltes oportunitats per desenvolupar aplicacions de xarxa distribuïda. Es tracta d' aplicacions on les dades i la computació es distribueixen entre molts dispositius i on, en principi, tots els dispositius envien i reben dades i es beneficien del còmput del grup. Les aplicacions van des de l'automatització de la llar fins a les criptomonedes. Com a complement a aquesta evolució, també estem veient que molts serveis informàtics s'han traslladat a entorns al núvol. Es tracta d'entorns computacionals on la computació es distribueix moltes vegades entre desenes de milers d'ordinadors per donar servei a milions d'usuaris. Això suggereix que qualsevol professional de la informàtica es beneficia en tenir una bona comprensió del que significa programar en un entorn distribuït.

Els objectius d' aquest curs són presentar als estudiants alguns dels conceptes fonamentals bàsics en computació
distribuïda i estudiar diferents algoritmes distribuïts. L' èmfasi estarà en els algorismes en els quals els nodes computacionals es comuniquen de forma asincrònica intercanviant missatges. Hi haurà sessions on s'introduiran algoritmes i l'estudiant podrà solidificar els conceptes a través de diversos projectes i exercicis de programació petits i mitjans. El curs comença amb la introducció d'algoritmes transversals simples i acaba amb Byzantine Consensus, la base de les implementacions públiques de blockchain.

Competències associades

Competències transversals

CT3. Aplicar amb flexibilitat i creativitat els coneixements adquirits i adaptar-los a contextos i a situacions nous.

 

Competències específiques

CE7. Dominar els conceptes i principis del funcionament intern d'un ordinador
així com de la comunicació entre ordinadors, que permeti l'anàlisi i avaluació
d'estructures de computadors, incloent plataformes paral·leles i distribuïdes.

CE11.Solucionar problemes complexos de computació utilitzant els principis i
tècniques dels sistemes intel·ligents.

 

 

 

Resultats de l'aprenentatge

RA.CE7.4 Detecta i avalua els principis i les  tècniques de la programació paral·lela i distribuïda.

RA.CE7.5 Analitza les característiques, les estructures i les tècniques associades als sistemes distribuïts.

RA.CE11.6 Empra algorismes avançats considerant aspectes de distribució i complexitat.

Objectius de Desenvolupament Sostenible

Hi haurà algunes discussions sobre l' impacte ambiental dels centres de dades i l' ús d' algunes de les criptomonedes.

Prerequisits

Els estudiants han de tenir coneixement dels conceptes bàsics de grafs, com ara els tractats en l’assignatura Àlgebra Lineal i Matemàtica Discreta;  conèixer la notació de complexitat asimptòtica usada en l’anàlisi dels algorismes al nivell que s’estudia a Fonaments de Programació, i tenir els coneixements de programació que es cobreixen a  Estructures de Dades i Algorismes i en una de les dues assignatures següents: Desenvolupament d’Aplicacions Distribuïdes o Protocols i Aplicacions Distribuïdes.

Continguts

  1. Preliminars:
  • Motivació: Enrutament / Broadcasting / Multicasting / Skype / File sharing / Tolerància a fallades, ZooKeeper
  • Hadoop - Processament de llenguatge natural
  • El nostre model computacional: panorama general de la computació distribuïda, model computacional asíncron mitjançant el pas de missatges, rellotges, propietats, safety i liveness. Nocions de complexitat computacional en algorismes distribuïts
  1. Ones
  2. Eleccions de líder
  3. Arbres d’expansió (spanning trees)
  4. Xarxes anònimes
  5. Consens /  tolerància a fallades
  6. Aplicacions avançades com taules de hash distribuïdes, que se seleccionarà durant el trimestre. MapReduce

Metodologia docent

 

 

 

Hores de classe

 

 

Hores estimades fora de classe

Activitat d ' avaluació

 

 

Grup gran

Grups mitjans

Grups petits

 

 

Preliminars

 

2

2

 

4

 

Onades

 

2

1

1

7

 

Eleccions de líders

 

2

1

1

7

 

Arbres d' expansió

 

4

1

1

7

 

Xarxes anònimes

 

2

1

1

7

 

Tolerància fallades/Consens

a

2

1

1

7

 

Consens bizantí

 

2

1

1

7

 

Tema avançat

 

2

1

1

7

 

Examen

 

 

 

 

 

2

Final

 

 

 

 

 

2

Total

18

10

8

60

4

Avaluació

Hi haurà un examen a mig trimestre, un examen final i tasques de programació i exercicis escrits.

 

La distribució de la nota final serà la següent:

  • Tasques: 30%
  • Examen a mig trimestre: 30%
  • Examen final: 40%

 

Cal obtenir com a mínim la meitat de la nota total en les tasques per poder passar el curs.

Bibliografia i recursos d'informació

En el curs se seguirà en gran part el llibre Distributed Algorithms, An Intuitive Approach?,  de Wan Fokkink.


Altres referències:

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.


Academic Year/course: 2022/23

3379 - Bachelor's degree in Telecommunications Network Engineering

25232 - Advanced Distributed Systems


Teaching Guide Information

Academic Course:
2022/23
Academic Center:
337 - Engineering School
Study:
3379 - Bachelor's degree in Telecommunications Network Engineering
Subject:
25232 - Advanced Distributed Systems
Credits:
4.0
Course:
3 and 4
Teaching languages:
Theory: Group 1: Pending
Practice: Group 101: Pending
Seminar: Group 101: Pending
Teachers:
---
Teaching Period:
Second Quarter
Schedule:

Presentation

We are witnessing an explosion of devices that can connect us to each other and connect among themselves. This has created many opportunities to develop distributed network applications. These are applications where data and computation are distributed among many devices and where, in principle, all the devices send and receive data and benefit from the computation of the group. Applications range from Home Automation to Cryptocurrencies. Complementary to this evolution we are also seeing many computing services being moved to cloud environments. These are computational environments where computation is distributed into, many times, tens of thousands of computers to serve millions of users. Hence, it is becoming essential for any computer professional to have a good understanding of what it means to program in a distributed environment.

The goals of this course are to introduce students to some of the core foundational concepts in distributed computing and study different distributed algorithms. The emphasis will be on algorithms in which computational nodes communicate  asynchronously exchanging messages. There will be lectures where algorithms will be introduced and student will be able to solidify the concepts through several small and medium programming  projects and exercises. The course starts with the introduction of simple traversal algorithms and ends with Byzantine Consensus, the basis of public blockchain implementations.

Associated skills

 

Transversal competences

CT3. Applying with flexibility and creativity the acquired knowledge and adapting it to new contexts and situations.

Specific competences

CE7. Mastering the concepts and principles of a computer’s inner functioning
as well as of the communication among computers, which allows the analysis
and assessment of computer structures, including parallel and distributed
platforms.

CE11.Solving complex computational problems using the principles and
techniques of intelligent systems.

 

 

Learning outcomes

RA.CE7.4 Detect and assess the principles and techniques of parallel and
distributed programming.

RA.CE7.5 Analyze the features, structures and techniques associated with
distributed systems.

RA.CE11.6 Use advanced algorithms considering distribution and
complexity aspects.

Sustainable Development Goals

There will be some discussion of the environmental impact of data centers and crypto currencies.

Prerequisites

Students must have knowledge of basic graph concepts such as the ones covered in “Linear Algebra and Discrete Mathematics”, understanding of asymptotic complexity analysis notation as  is covered in “Programming Fundamentals”, as well as programming skills as the ones covered in “Data Structures and Algorithms” and in “Development of Distributed Applications” or “Protocols and Distributed Applications”.

Contents

  1. Preliminaries

    • Motivation: Routing/Broadcasting/Multicasting/Skype/File Sharing, Fault tolerance, ZooKeeper, Hadoop - NLP

    • Our computational model: General overview of distributed computation, Asynchronous computational model using message passing, Clocks, Safety and liveness

    • Notions of computational complexity in distributed algorithms

  2. Waves

  3. Leader elections

  4. Spanning trees

  5. Anonymous networks

  6. Fault tolerance/ Consensus

  7. A topic on advanced applications of Byzantine Consensus such Blockchains or Privacy

Teaching Methods

 

 

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

 

Fault tolerance/Consensus

2

1

1

7

 

Byzantine Consensus

2

1

1

7

 

Advanced Topic

2

1

1

7

 

Midterm

       

2

Final

       

2

Total

18

10

8

60

4

Evaluation

 

There will be a midterm evaluation  and final exam as well as homework activities which will include programming projects and exercises.

Distribution of final grade:

  • Homework 30%

  • Midterm     30%

  • Final          40%

Students must get at least half of the total portion of the homework to pass the class.

 

Bibliography and information resources

The course will mostly follow the book “Distributed Algorithms, An Intuitive Approach” by Wan Fokkink.

Other references for optional topics:

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.


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.