Aviso: Se está a ler esta mensagem, provavelmente, o browser que utiliza não é compatível com os "standards" recomendados pela W3C. Sugerimos vivamente que actualize o seu browser para ter uma melhor experiência de utilização deste "website". Mais informações em webstandards.org.

Warning: If you are reading this message, probably, your browser is not compliant with the standards recommended by the W3C. We suggest that you upgrade your browser to enjoy a better user experience of this website. More informations on webstandards.org.

Sub Menu
ISCTE-IUL  >  Ensino  >  LETI , LEI , LEI-PL , LIGE , LIGE-PL

Programação Concorrente e Distribuída (2 º Sem 2019/2020)

Código: L5096
Acrónimo: L5096
Nível: 1º Ciclo
Estruturante: Não
Língua(s) de Ensino: Português
Língua(s) amigável(is):
Ser English-friendly ou qualquer outra língua-friendly, significa que a UC é leccionada numa língua mas que se pode verificar qualquer uma das seguintes condições:
1. Existem materiais de apoio em língua inglesa/outra língua;
2. Existem exercícios, testes e exames em língua inglesa/outra língua;
3. Existe a possibilidade de se apresentar trabalhos escritos ou orais em língua inglesa/outra língua.
1 6.0 18.0 h/sem 36.0 h/sem 0.0 h/sem 0.0 h/sem 0.0 h/sem 0.0 h/sem 1.0 h/sem 55.0 h/sem 95.0 h/sem 0.0 h/sem 150.0 h/sem
Em vigor desde o ano letivo 2018/2019
Pré-requisitos Esta UC tem como precedência as seguintes UC:
- Introdução à Programação
- Programação Orientada para Objectos


Os tópicos programáticos a desenvolver nesta disciplina pressupõem um domínio da programação orientada para objectos em Java
Objectivos Aprender o paradigma da programação concorrente. Conseguir desenhar e implementar aplicações gráficas e concorrentes de média escala. Conhecer os principais padrões de desenho de aplicações concorrentes. Aprender de uma forma introdutória os conceitos da programação distribuída bem como conseguir desenhar e implementar aplicações distribuídas simples.
Programa CP1. Introdução.

CP2. Programação gráfica por eventos em SWING.

CP3. Noção de Processo Ligeiro. Ciclo de vida de um processo ligeiro.
CP4. Sincronização, cadeados.
CP5. Coordenação de processos ligeiros.
CP6. Bloqueio explícito. Starvation e deadlock.
CP7. Estudo de alguns dos problemas clássicos da programação concorrente.
CP8. Pools de processos ligeiros.

CP9. Programação em rede
CP10. Arquiteturas distribuídas.
CP11. Distribuição de dados e código, serialização e applets.
Processo de avaliação É obrigatória a inscrição para as provas escritas.
A avaliação é efectuado por um projecto e uma frequência.
O projecto tem dois momentos de avaliação uma entrega intercalar e uma oral na última semana de aulas.
As classificações possíveis no Projeto Individual são (A, B, C, D). A classificação obtida no projeto não tem peso na nota final, mas define um limite máximo para a mesma:
A-max. 20
B-max. 16
C-max. 12
D-reprovação à UC

Nota final é apenas dada pela classificação da frequência.
Processo de ensino-aprendizagem As aulas estão organizadas em teórico e de exercícios. As aulas teórico  caracterizam-se por blocos de exposição encadeados com exemplos e exercícios. Para incentivar a aprendizagem contínua serão realizados testes de curta duração (microtestes) focados na matéria recentemente leccionada. Nas aulas de exercícios, os alunos devem resolver um conjunto de problemas.  Adicionalmente espera-se dos alunos ~6 horas de trabalho semanal para completar os exercícios das aulas e realizar o projeto final.
Observações A assiduidade não é usada como critério de reprovação.
Datas de avaliação são definidas em Conselho de Ano.
Horários de avaliações finais são definidos administrativamente e publicados na página do ISCTE.
Em caso de falta a uma prova o coordenador pode permitir substituí-la por outra equivalente. Estudantes que não possam cumprir o método de avaliação descrito devem contactar o coordenador nas duas primeiras semanas de aulas.
O horário de atendimento é disponibilizado aos estudantes na plataforma de e-learning e/ou na página da UC.
Bibliografia básica JAVA Threads, Third Edition, Scott Oaks & Henry Wong, 2004 O'Reilly.

Principles of Concurrent and Distributed Programming, M. Ben-Ari, 2006 Addison Wesley

Foundations of Multithreaded, Parallel, and Distributed Programming, Gregory R. Andrews, 1999 Addison Wesley

Introduction to Java Programming, Y. Daniel Liang, 2009 Pearson.


Bibliografia complementar Tutorial for J6SE:
      http://download.oracle.com/javase/tutorial/index.html

Tutorial for J5EE:
http://download.oracle.com/javaee/5/tutorial/doc/