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).

Professor: João Paulo Andrade Almeida (jpalmeida “arroba” inf “ponto” ufes “ponto” br)

Comunicados:

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:

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.