El curso introduce principios fundamentales de los sistemas distribuidos y paralelos, con especial
énfasis en aquellos que se usan en plataformas de computación en la nube y de procesamiento masivo
y escalable de datos. Se exploran conceptos de comunicación y coordinación entre procesos
distribuidos, recalcando los conceptos de atomicidad y consenso. Se recalca que resulta
imprescindible el usar paralelismo para conseguir mejoras de rendimiento, y se estudian las
estrategias de descomposición, diseño y arquitectura de sistemas, incluyendo estrategias de
implementación, análisis de rendimiento y mejoras (tuning). Se estudia también los conceptos de
tolerancia a fallos, con un énfasis en el mantenimiento de estado replicado, introduciendo conceptos
que proporcionan un enlace con los conceptos estudiados bajo el contexto de las redes de datos.
*M. van Steen and A.S. Tanenbaum, Distributed Systems, 3rd ed., distributed-systems.net, 2017.
(Complementario) *George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair. 2011. Distributed Systems: Concepts and Design (5th. ed.). Addison-Wesley Publishing Company, USA.
Cada video de clase y recursos externos por sesión, tienen un control de lectura en SidWeb el cual está disponible una semana antes de la sesión correspondiente.
| Sesión | Unidad | Subunidad | Mes | Día | Tipo | Tema | Link | 
| 1 | 1 |  | Octubre | 13 |  | Syllabus y políticas del curso |       | 
| 2 | 1.1 | Octubre | 15 | Cuestionario | Estado personal | Teams | 
| Video de clase | Conceptos básicos de sistemas distribuidos y computación en la nube |     | 
| Lectura externa | Google as xerox parc |   | 
| 3 | 1.2 | Octubre | 20 | Video de clase | Desafíos al construir sistemas distribuidos |     | 
| Video externo | Why Are Distributed Systems So Hard? |   | 
| 4 | 1.3 | Octubre | 22 | Video de clase | Modelos y arquitecturas distribuidas |     | 
| Video externo | Scaling Memcache at Facebook |   | 
| 5 | 2 | 2.1 | Octubre | 27 | Video de clase | Modelo de fallas en sistemas distribuidos |     | 
| Video externo | How Netflix Embraces Failure to Improve Resilience and Maximize Availability |   | 
| 6 | 2.2 | Octubre | 29 | Video de clase | Redundancia y enmascaramiento de fallas |     | 
| 7 | 2.3 | Noviembre | 5 | Video de clase | Escalabilidad, replicación, consenso y acuerdo |     | 
| Video externo | In Search of an Understandable Consensus Algorithm |   | 
| 1 | 1 y 2 |  | Noviembre | 10 | Lección | Unidades 1 y 2 |  | 
| 9 | 3 | 3.1 | Noviembre | 12 | Video de clase | Parte 1: Descomposición de tareas paralelas y distribuidas |     | 
| Video de clase | Parte 2: Descomposición de tareas paralelas y distribuidas |     | 
| Lectura externa | Professor Enlists Android Phones in Search for Black Holes |   | 
| 10 | 3.2 | Noviembre | 17 | Video de clase | Parte 1: Análisis de rendimiento de algoritmos paralelos |     | 
| Video de clase | Parte 2: Análisis de rendimiento de algoritmos paralelos |     | 
| Lectura externa | Uber Marketplace: Location Serving & Storage in the Uber Marketplace |   | 
| 11 | 3.3 | Noviembre | 19 | Video de clase | Parte 1: Plataformas de procesamiento distribuido |     | 
| Video de clase | Parte 2: Plataformas de procesamiento distribuido |     | 
| Video externo | Achieving Rapid Response Times in Large Online Services |   | 
| 12 | 4 | 4.1 | Noviembre | 24 | Video de clase | Protocolo pedido-respuesta |     | 
| Video externo | The Two Generals’ Problem |   | 
| 13 | 4.2 | Noviembre | 26 | Video de clase | Parte 1: Comunicación directa entre procesos |     | 
| Video de clase | Parte 2: Comunicación directa entre procesos |     | 
| Lectura externa | Avoiding Double Payments in a Distributed Payments System |   | 
| 14 | 4.3 | Diciembre | 1 | Video de clase | Parte 1: Comunicación indirecta entre procesos (colas de mensajes, publicar-subscribir) |     | 
| Video de clase | Parte 2: Comunicación indirecta entre procesos (colas de mensajes, publicar-subscribir) |     | 
| 15 | 1, 2, 3 y 4 |  | Diciembre | 3 | Lección | Unidades 1, 2, 3 y 4 |  | 
| 16 | 5 | 5.1 | Diciembre | 8 | Video de clase | Latencia versus throughput |     | 
| 17 | 5.2 | Diciembre | 10 | Video de clase | Consistencia, disponibilidad, tolerancia a particiones, en bases de datos distribuidas |     | 
| Video externo | Why Computers Can't Count Sometimes |   | 
| 18 | 5.3 | Diciembre | 15 | Video de clase | Servicios con estado o sin estado |     | 
| Lectura externa | Spanner, the Google Database That Mastered Time, Is Now Open to Everyone |   | 
| Video externo | Spanner: Google’s Globally-Distributed Database |   | 
| 19 | 5.4 | Diciembre | 17 | Video de clase | Localidad de datos y su aplicación en almacenamiento y cacheo en la nube |     | 
| Video externo | An analysis of Facebook photo caching |   | 
| 20 | 5.5 | Diciembre | 22 | Video de clase | Redes de distribución de contenidos: Balanceo de carga |     | 
| Video externo | Client-side load balancing |   | 
| Video externo | Server-side load balancer |   | 
| Lectura externa | (Opcional) Spring Cloud Series: Balanceo de carga en el cliente (client side load balancing) usando Ribbon |   | 
| 21 | Enero | 5 | Video de clase | Redes de distribución de contenidos: Ruteo global de pedidos |     | 
| 22 | 6 | 6.1 | Enero | 7 | Video de clase | Tiempo físico |     | 
| Lectura externa | Time Split to the Nanosecond Is Precisely What Wall Street Wants |   | 
| 23 | 6.2 | Enero | 12 | Video de clase | Tiempo lógico |     | 
| Video externo | Hybrid Logical Clocks |   | 
| 24 | 6.3 | Enero | 14 | Video de clase | Consenso y elecciones |     | 
| Video externo | Paxos vs Raft: Have we reached consensus on distributed consensus? |   | 
| 25 |  |  | Enero | 19 | Presentación de proyectos |  |  | 
| 26 |  |  | Enero | 21 | Presentación de proyectos |  |  | 
|  | 1,2,3,4,5,6 |  | Enero | 25 | Examen - 14:00 a 16:00 |  |  | 
|  | 1,2,3,4,5,6 |  | Febrero | 8 | Examen - 14:00 a 16:00 |  |  |