Planeamento


Aulas do tipo Teórico

Apresentação da unidade curricular. Introdução às interfaces gráficas: Swing.

Apresentação da unidade curricular:

  • Motivação;
  • Funcionamento das aulas;
  • Avaliação;
  • Programa;
  • Bibliografia;

Introdução às interfaces gráficas. Interfaces gráficas em Java.

Introdução ao Swing:

  • Contentores;
  • Layouts;
  • Labels, botões, caixas de texto;
Programação por eventos aplicado a interfaces gráficas.

Programação por eventos e interfaces gráficas:

  • Programação por eventos;
  • Registo de sentinelas;
  • Geração de eventos;

Classes internas:

  • Classes internas;
  • Classes anónimas;
  • Exemplos de utilização
Trabalho autónomo:

Ler os acetatos e consultar a API do java para as classes e interfaces do Swing abordadas na aula, nomeadamente:

  • JFrame
  • JButton
  • JTextField
  • JPanel
  • ActionListener
  • FlowLayout
  • BorderLayout
  • GridLayout
  • sobre Classes internas: http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html
  • sobre Swing:http://docs.oracle.com/javase/tutorial/uiswing/index.html


Introdução à programação concorrente

  • Conceito de thread;
  • Threads em JAVA;
  • Multitasking vs. multithreading;
  • A classe Thread;
  • Inicialização de threads - o interface Runnable;
  • Interrupção de threads;
  • Outros métodos da classe Thread;
  • Ciclo de vida de uma thread;
  • Exercícios
Trabalho autónomo:

Ler capítulos 1 e 2 do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Interferência e sincronização em processos ligeiros

  • Conceito de erro de inconsistência de memória;
  • Conceito de ações e instruções atómicas;
  • Conceito de cadeado de exclusão;
  • Definição de métodos sincronizados;
  • Definição de blocos sincronizados.
Trabalho autónomo:

Ler capítulo 3 do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Coordenação de processos ligeiros

  • Problemas produtor-consumidor
  • Conceito de recurso partilhado;
  • Mecanismos de coordenação
Trabalho autónomo:

Ler capítulo 4 do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Apresentação do projeto

Apresentação pormenorizada e demonstração do projeto de PCD


Estruturas de coordenação

  • cadeados
  • variáveis condicionais,
  • listas bloqueantes,
  • semáforo
Trabalho autónomo:

Ler capítulos 4, 6, 8 e Apêndice do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Concorrência usando objetos de alto nível.

  • Barreiras e CountDownLatch;
  • Executores: ThreadPools, Execução agendada e futuros.
Trabalho autónomo:

Ler capítulos 6, 10 e apêndice do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Problemas clássicos da coordenação de processos ligeiros

  • Deadlock, Livelock e Starvation;
  • Problemas da coordenação;
  • Exemplos;
  • Exercícios.
Trabalho autónomo:

Ler capítulos 5 e 6 do [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Introdução à Programação em rede.

Programação em Rede
  • Introdução à programação em rede;
  • Exemplos;
  • Exercícios.

Serialização em Java:

  • Serialização;
  • Serialização em Java;
  • Controle sobre o processo de serialização de objetos;
  • Exemplos;
  • Exercícios;


Comunicação em rede: NIO

  • Revisão da abordagem clássica de IO entre componentes de sistemas disistribuídos e identificação de limitações
  • Apresentação da biblioteca NIO e das suas capacidades para comunicação não-bloqueante
  • Apresentação das suas principais classes (Channel, Buffer e Selector) e respetivos métodos
  • Apresentação de exemplo de implementação de servidor com base na biblioteca NIO
Trabalho autónomo:

Ler capítulo 12 de [Oaks e Wong].

(Consultar bibliografia da FUC para referência completa)


Apoio ao Projeto

Apoio ao projeto de PCD
Esclarecimento de dúvidas


Resolução de frequência modelo

Resolução de uma frequência e esclarecimento de dúvidas


Aulas do tipo Teórico-Prático

Exercícios Swing

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios de introdução à programação concorrente

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios sobre sincronização de processos ligeiros

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios sobre coordenação de processos ligeiros

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios sobre coordenação de processos ligeiros II

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios sobre semáforos, variáveis condicionais e listas bloqueantes.

Resolução dos exercícios propostos. Ver enunciados no e-learning.

Trabalho autónomo:

Conclusão dos exercícios propostos


Exercícios sobre barreiras e ThreadPools

Resolução dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios sobre problemas clássicos da coordenação de processos ligeiros

Resolução dos exercícios propostos na aula teórica. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Implementar os diversos problemas propostos na aula teórica.

Conclusão dos exercícios propostos.


Exercícios sobre programação em rede

Resolução  dos exercícios propostos. Ver enunciados na plataforma do elearning.

Trabalho autónomo:

Conclusão dos exercícios propostos.


Exercícios de Comunicação em rede: NIO

Ver enunciados na plataforma do elearning.

Em complemento, apoio ao desenvolvimento do projeto.

Trabalho autónomo:

Conclusão do exercício proposto.

Continuação do desenvolvimento do projeto.


Apoio ao projeto e apresentação intercalar

Aula de apoio ao desenvolvimento do projeto.

Trabalho autónomo:

Desenvolvimento do projeto final.