Objetivos / Competências
Identificar de uma forma abrangente os algoritmos, protocolos e fundamentos dos sistemas distribuídos modernos. Explorar o paralelismo de aplicações. Adquirir conhecimentos sobre técnicas fundamentais para o desenho de aplicações distribuídas em ambiente empresarial e para a Internet. Desenvolver aplicações distribuídas.
Conteúdos programáticos resumidos
1 Fundamentos
1.1 Caracterização de sistemas distribuídos
1.2 Modelos do Sistema
1.3 Redes e Internetworking
1.4 Comunicação entre processos
1.5 Invocação remota
1.6 Comunicação Indireta
1.7 Suporte do sistema operativo.
2 Middleware
2.1 Objetos e Componentes Distribuídos
2.2 Web Services
2.3 Sistemas Peer-to-Peer
3 Algoritmos distribuídos
3.1 Tempo e estados globais
3.2 Coordenação e Acordo
4 Partilha de dados
4.1 Transações e Controlo de Concorrência
4.2 Transações distribuídas
4.3 Replicação
5 Blockchain
5.1 Arquiteturas
5.2 Aplicações
Metodologias de ensino e critérios de avaliação
Aulas de caráter essencialmente prático, com apelo constante à participação, desenvolvimento do espírito crítico e de iniciativa, e procura da excelência nos trabalhos realizados.
• Ponderação, em todas as épocas de avaliação: trabalhos práticos (35%, mínimos: 10/20); prova escrita (50%, mínimos: 10/20); tarefas resolvidas presencialmente em aula (15%, mínimos para Época Normal: 12/20).
• Parte da classificação dos trabalhos práticos resulta da sua avaliação contínua em Época Normal.
• Todos os trabalhos são passíveis de defesa individual.
Bibliografia resumida
- Distributed Systems: Concepts and Design, George Coulouris, Jean Dollimore, Pearson, 2002 (004.451 COU)
- Distributed Systems: Principles and Paradigms (2nd Edition), Andrew S. Tanenbaum, Maarten Van Steen,2007 (004.451 TAN)
- Distributed Algorithms: An Intuitive Approach, Wan Fokkink, Massachusetts Institute of Technology, 2013