Programa da disciplina:

Unidade 1: Introdução à programação paralela e distribuída

1.1. Evolução e Histórico
1.2. Revisão de computação concorrente
1.3. Arquiteturas paralelas e distribuídas
1.4. Características de aplicações distribuídas
1.5. Características de aplicações paralelas

Unidade 2: Comunicação e gerência de rocessos

2.1 Conceitos básicos
2.2 Comunicação entre processos
      2.2.1 Troca de mensagens
      2.2.2 Primitivas e Sincronização
      2.2.3 Modelo Cliente-Servidor
      2.2.4 Comunicação em grupo
2.3 Gerência de Processos e Recursos
      2.3.1 Conceitos Básicos
      2.3.2 Processos x Threads
      2.3.3 Escalonamento

Unidade 3: Programação Distribuída

3.1 Introdução
3.2 Modelos de programação distribuída
      3.2.1 Probe/echo
      3.2.2 Broadcast
      3.2.3 Token-passing
      3.2.4 Servidores replicados
3.3 Chamada Remota de Procedimentos (RPC)
      3.3.1 Conceitos básicos
      3.3.2 Passagem de parâmetros
      3.3.3 Detalhes de implementação
3.4 Algoritmos distribuídos
      3.4.1 Sincronização
      3.4.2 Exclusão mútua
      3.4.3 Detecção de deadlocks
      3.4.4 Algoritmos de eleição

Unidade 4: Programação Paralela

4.1 Introdução
4.2 Métricas de desempenho
4.3 Modelos de programação paralela
      4.3.1 Mestre-escravo
      4.3.2 Pipeline
      4.3.3 Fases paralelas
      4.3.4 Divisão e conquista
4.4 Biblioteca padrão MPI
      4.4.1 Conceitos básicos
      4.4.2 Primitivas
      4.4.3 Detalhes de implementação
4.5 Desenvolvimento de aplicações Paralelas
      4.5.1 Exemplos
      4.5.2 Técnicas de otimização e refinamento