Syllabus query



Academic Year/course: 2018/19

3375 - Bachelor's degree in Audiovisual Systems Engineering

25209 - Advanced Distributed Systems


Teaching Guide Information

Academic Course:
2018/19
Academic Center:
337 - Engineering School
Study:
3375 - Bachelor's degree in Audiovisual Systems Engineering
Subject:
25209 - Advanced Distributed Systems
Credits:
4.0
Course:
4 and 3
Teaching languages:
Theory: Group 1: Pending
Practice: Group 101: Pending
Seminar: Group 101: Pending
Group 102: Pending
Teachers:
Jorge Lobo
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. 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.

Associated skills

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.

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. Elective topic on advanced applications such as Distributed Hash tables

  8. MapReduce

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

 

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

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:

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.

 


Curso Académico: 2018/19

3375 - Grado en Ingeniería en Sistemas Audiovisuales

25209 - Sistemas Distribuidos Avanzados


Informació de la Guia Docent

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

  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.

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.


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

  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.

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.