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.

Professor: João Paulo Andrade Almeida (jpalmeida “arroba” inf “ponto” ufes “ponto” br)
Carga horária semestral total: 60 horas
Horário e local: terças 13:00-15:00 (CT-9, sala 207), sextas 16:00-18:00  (CT-9, sala 202)

Comunicados:

  • Primeira aula: terça-feira, 03/03/2020, 13: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, listas de exercícios e trabalhos.

Critério de Avaliação:

Duas provas parciais e trabalhos. A média parcial é calculada por: MP = 0,6*P + 0,4*T
onde: P é a média aritmética das provas parciais e T é a média aritmética das notas dos trabalhos.
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

Material bibliográfico:

Livro texto:

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

Artigos:

  • P.A. Bernstein. Middleware. Communications of the ACM, Vol. 39, No. 2, February 1996, 86-98.
  • P. Eugster, P. Felber, R. Gerraoui, A.M. Kermarrec, The Many Faces of Publish/Subscribe, ACM Computing Surveys, Vol. 35, No. 2, June 2003, pp. 114–131.

Web sites: