área científica
Informática / Ciência e Tecnologia da Programação
escolaridade
ensino teórico-prático (TP) - 3 horas/semana
idioma(s) de lecionação
Português, Inglês
objectivos
Domínio de métodos e técnicas avançadas de programação concorrente no contexto da programação orientada por objectos em Java.
competências
Domínio de métodos e técnicas avançadas de programação concorrente no contexto da programação orientada por objectos em Java.
conteúdos
- Revisão de conceitos sobre programação Orientada por Objectos e Programação por Contrato
- Suporte nativo à concorrência em Java;
- Concorrência num contexto de objectos;
- Comunicação por partilha de memória: mecanismos básicos de sincronismo.
- Comunicação por partilha de objectos: esquemas de sincronismo interno de objectos (monitores, exclusão leitores-escritor, leitores-escritor concorrentes, copy-on-write, transacções).
- Concorrência e controlo de fluxo de programas imperativos.
- Comunicação por partilha de objectos: esquemas de sincronismo externo de objectos (exclusão, transacções).
- Concorrência e contratos.
- Comunicação por partilha de objectos: esquemas de sincronismo condicional de objectos.
- Concorrência, tipos de dados abstractos, e polimorfismo subtipo (herança).
- Comunicação por envio de mensagens: mecanismos básicos de sincronismo.
- Concorrência e invocação de funções.
- Comunicação por envio de mensagens: actores.
- Gestão de falhas num contexto concorrente (excepções concorrentes).
avaliação
Avaliação Final:
- 20.00% TP (Exame teórico-prático)
- 30.00% TP (Exame prático)
- 50.00% TP (Trabalho prático)
requisitos
Noções básicas sobre Programação Orientada por Objectos em Java e sobre Programação Concorrente
metodologia
Esta disciplina privilegia a aprendizagem prática, sendo pelo menos 2/3 das aulas inteiramente dedicadas a essa vertente (com acompanhamento próximo do docente). Esse pendor é reforçado também pelo método de avaliação utilizado uma vez que metade da classificação resulta de um trabalho prático a ser apresentado no fim do semestre.
bibliografia recomendada
- Doug Lea, Concurrent Programming in Java, Addison-Wesley, second edition, 2000
- Bertrand Meyer, Object-Oriented Software Construction, Prentice Hall, 2nd edition, 1997
- Andy Wellings, Concurrent and Real-Time Programming in Java, Wiley, 2004