INE 5645 - Programação Paralela e Distribuída


Tarefas Teóricas e de Programação

Material Didático
Unidade 1:   Introdução

Unidade 2-Parte 1:   Programação Concorrente

Unidade 2-Parte 2:  Concorrência em Java

Material de Apoio:  Cap. 23-Deitel-Java: Como Programar, Ed. 6

Tarefa Inicial de Programação 1 - Parte Teórica - Estruturação de Threads. Construir um exemplo, sobre a estruturação de threads.

-------------------------------------------------------------------------------------------

Unidade 3:  Concorrência, Semáforos, Monitores

Tarefa Inicial de Programação 2 - Produtor-Consumidor com Monitor.

Tarefa Inicial de Programação 3 - Produtor-Consumidor com Semáforo.

Livro "Java Como Programar", Edição 6, Deitel & Deitel - Cap. 23 - Multithreading

Objetivo: Trabalhar um primeiro exemplo de programação concorrente com Threads.

Programar o problema do Produtor-Consumidor com buffer limitado. O trabalho poderá ser feito em dupla, mas a dupla deverá estar presente para mostrar o programa funcionando. Postar a tarefa no Moodle até a data programada. Para quem é iniciante, um exemplo de programa está no Cap. 23 do livro referido acima. A explicação do exemplo é importante para o aprendizado.

Download de códigos do livro Deitel-Java-6Ed. em :  http://www.inf.ufsc.br/~bosco/Downloads/

Obs: A tarefa será computada para a nota da parte dos trabalhos práticos.

Página Prof. Lau Lung  (Seguir em toda a disciplina)
  Cronograma da disciplina, Trabalhos de Programação, Material de Apoio. 

Laboratório 1:  Monitores

Laboratório 3: Semáforos

--------------------------------------------------------------------------------------------------------------

Unidade 3:  Controle de Concorrência com Locks  (1)

Implementar a concorrência, usando locks, entre as duas transações T e U exemplificadas no slide 83. Você pode considerar a implementação de uma Interface Coordinator de transações, como no slide 37, a Classe Lock e a Classe LockManager, como mostradas ao final dos slides.

Laboratório 2:  Locks

-------------------------------------------------------------------------------------------

Unidade 4:  Sockets.  Ver slides do Prof. Lau 

Tarefa Inicial de Programação 4:  
Programação com Sockets.  Implementar uma aplicação distribuída usando sockets.

(1) Comunicação de Datagramas UDP
(2) Comunicação com TCP Streams
(3) Comunicação de grupo com IP Multicast.

Laboratório 4 (Tarefa proposta pelo Prof. Bosco): Tarefas com Sockets

Exemplos de Código para implementação e datagramas com sockets.
   Datagram Socket Client
   Datagram Socket Server

Exemplos e Código para implementação e sockets TCP
   TCP Stream Socket Client
   TCP Stream Socket Server

Exemplo de código para implementação de comunicação de grupo com multicast IP.
   Group Communication Socket com IP Multicast

Laboratório 4 (Tarefa proposta pelo Prof. Lau) : Comunicação de Processos

-------------------------------------------------------------------------------------------

Unidade 5:  Objetos Distribuídos e Invocação Remota de Métodos

Tarefa 5:   
Implementar usando sockets ou Java RMI, uma aplicação distribuída   
                    sobre o sistema de despertador automático de uma operadora de
                    telefonia.  Um design pattern (padrão de projeto) está descrito no
                    arquivo texto no link abaixo. Você deve utilizar este design pattern,
                    podendo se discordar do código usado, refazer conforme seu
                    entendimento.

Laborat´rio 5 (Bosco)   Implementando CallBack

Laboratório 5: Comunicação usando RMI (Invocação de Métodos Remotos)

-------------------------------------------------------------------------------------------