Disciplina de Processamento Paralelo e Distribuído, oferecida pelo Departamento de Informática para os cursos de Ciência da Computação e Engenharia de Computação da Universidade Federal do Espírito Santo no primeiro semestre de 2020 (EARTE).
Comunicados:
- Primeiro encontro síncrono: sexta-feira, 11/09/2020, 16:00-18:00.
- Atividades assíncronas serão divulgadas aqui.
- Os próximos encontros síncronos serão às terças-feiras, 13:00-15:00.
- Atividade assíncrona semana 2:
- Link para o encontro do dia 15/09/2020, 13:00-15:00:
- Atividades assíncronas semana 3:
- Vídeo aula em preparação para o encontro do dia 22/09: parte1 e parte2
- Leitura do livro texto (van Steen & Tanenbaum): Capítulo 2, seções 2.1 e 2.2 (páginas 55-80) (podem saltar Note 2.3) e Web como exemplo (páginas 98-101).
- Link para o encontro do dia 22/09/2020, 13:00-15:00:
- Atividades assíncronas semana 4:
- Executar código disponibilizado sobre uso de sockets em C e Java: aqui.
- O código em C é basicamente aquele fornecido por Robert Ingalls em seu tutorial do sockets. Também inclui um exemplo multi-threaded.
- Vídeo aula em preparação para o encontro do dia 29/09
- Leitura do livro texto (van Steen & Tanenbaum):
- Capítulo 3, Processos e Threads (p. 103-116), Servidores (p. 129-135)
- Capítulo 4, Middleware (p. 170-182), Sockets (p. 193-196)
- Link para o encontro do dia 20/10/2020, 13:00-15:00:
- Link para o encontro do dia 23/10/2020, 16:00-18:00:
- Link para o encontro do dia 27/10/2020, 13:00-15:00:
- Vídeo aula 05 [Projeto de Sistemas Distribuídos]
- Esta semana haverá 2 encontros síncronos de 1 hora cada:
- Link para o encontro do dia 10/11/2020, terça-feira, 13:00:14:00:
- Link para o encontro do dia 13/11/2020, sexta-feira, 17:00-18:00 (novo horário):
- Link para o encontro do dia 17/11/2020, 13:00-15:00:
- Link 24/11, 13:00-14:00:
- Link 27/11, 17:00-18:00:
- Link 01/12, 13:00-15:00:
- Link 08/12, 13:00-15:00:
Objetivos Gerais:
Apresentar os conceitos básicos e aplicações da computação distribuída e paralela, com uma abordagem prática que inclui o uso de plataformas middleware para a construção de aplicações distribuídas.
Metodologia:
Aulas expositivas por vídeo conferência, vídeo aulas assíncronas, análise de artigos, listas de exercícios, e apresentação de ferramentas de suporte aos sistemas paralelos e distribuídos.
Critério de Avaliação:
Dois trabalhos de implementação e experimentação com sistemas paralelos e distribuídos (cada um com peso de 50% na média parcial) (avaliação assíncrona com base em implementação e relatório).
A média final será:
MF = MP, se MP ≥ 7,0.
MF = (PF + MP)/2, se MP < 7,0. (PF é a nota da prova final)
Se MF ≥ 5,0 -> Aprovado.
Se MF < 5,0 -> Reprovado.
Programa da Disciplina:
- Introdução
- Conceituação: distribuição e paralelismo (em diferentes níveis)
- Exemplos de aplicações
- Aspectos: concorrência, escalabilidade, falhas independentes, segurança, heterogeneidade, etc.
- Histórico
- Remote Procedure Call (RPC)
- Objetos distribuídos
- exemplo: Java Remove Method Invocation (RMI)
- Middleware orientado a mensagens (Message-Oriented Middleware, publish/subscribe)
- exemplo: Java Messaging Service (JMS)
- Middleware orientado a serviços (Web Services)
- REST (XML, JSON)
- Conceitos de sistemas paralelos: speed-up (aceleração), eficiência, grau de concorrência, granularidade de tarefas, interação entre tarefas, overhead de comunicação
- Princípios de projeto de sistemas paralelos: técnicas de decomposição de problemas (decomposição de dados, decomposição recursiva, decomposição exploratória, decomposição especulativa)
- Padrões de projeto (design patterns) para sistemas distribuídos
- Análise de desempenho com cluster de computadores
- Aplicações
Slides/Material de Aula
Serão disponibilizados aqui.
Material bibliográfico:
Em virtude do ensino remoto, o seguinte material bibliográfico será utilizado, pois está disponível gratuitamente online:
Material complementar, também disponível online:
- The Java Tutorials, Trail: RMI, disponível online em https://docs.oracle.com/javase/tutorial/rmi/index.html
- The Java EE Tutorial, Part IX Messaging, disponível online em https://javaee.github.io/tutorial/partmessaging.html#GFIRP3
- P. Eugster, P. Felber, R. Gerraoui, A.M. Kermarrec, “The Many Faces of Publish/Subscribe”, ACM Computing Surveys, Vol. 35, No. 2, 2003, 114–131. Disponível online em: https://infoscience.epfl.ch/record/165428/files/10.1.1.10.1076.pdf
Material bibliográfico adotado tradicionalmente, pois há disponibilidade de cópias físicas nas bibliotecas da Ufes; porém, devido ao ensino remoto serão considerados material complementar:
- COULOURIS, George F.; DOLLIMORE, Jean; KINDBERG, Tim. Distributed Systems: Concepts and Design, 5. ed., Addison Wesley, 2011.
Disponível também na tradução em português com o título: Sistemas distribuídos: conceitos e projeto. 5. ed., Bookman, 2013.
Pelo menos os capítulos: 1, 2, 4, 5, 6, 8, 9
- Capítulo 3, seções 3.1 e 3.2 de “Introduction to Parallel Computing” (2nd Edition) de Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta, Addison Wesley, 2003.