PGC307C – Tópicos Especiais em Sistemas de Computação 1: Algoritmos Distribuídos

EMENTA:

DISCIPLINA: Tópicos Especiais em Sistemas de Computação 1: Algoritmos Distribuídos

CÓDIGO: PGC307C

CARGA HORÁRIA: 90h

CRÉDITOS: 5

OBJETIVOS GERAIS DA DISCIPLINA: 

Computação distribuída é uma área de importância crescente devido à necessidade de sistemas cada vez mais escaláveis, disponíveis e responsivos. Este curso tem por objetivo apresentar, discutir e resolver diversos problemas clássicos em computação distribuída, considerando diversos modelos de computação, formando o arcabouço teórico necessário para que os estudantes possam, em sua vida profissional, identificar tais problemas nos sistemas que venham a projetar, bem como soluções (ou impossibilidade de) para os mesmos.

DESCRIÇÃO DO PROGRAMA:

1. Introdução e motivação ao estudo de computação distribuída,
2. Modelos computacionais para computação distribuída,
3. Relógios lógicos
4. Algoritmos de snapshot
5. Algoritmos de Wave
6. Algoritmos de travessia
7. Algoritmos de construção de árvores
8. Algoritmos de detecção de deadlock
9. Algoritmos de detecção de terminação
10. Algoritmos de coleta de lixo
11. Algoritmos de roteamento
12. Algoritmos de eleição de líderes
13. Impossibilidade de eleição em anéis anônimos
14. Algoritmos probabilísticos: Las Vegas e Monte Carlo
15. Tolerância a Falhas e Consenso
16. Impossibilidades de consenso
17. Detectores de falhas imperfeitos
18. Sincronização de relógios

BIBLIOGRAFIA:

Wan Fokkink. 2013. Distributed Algorithms: An Intuitive Approach. The MIT Press.
Nancy A. Lynch. 1996. Distributed Algorithms. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.
Leslie Lamport. 1978. Time, clocks, and the ordering of events in a distributed system. Commun. ACM 21, 7 (July 1978), 558-565. DOI=http://dx.doi.org/10.1145/359545.359563