Sistemas Distribuídos

Engenharia Informática
6 ECTS; 3º Ano, 1º Semestre, 28,0 T + 42,0 PL + 5,0 OT + 5,0 O

Docente(s)
- António Manuel Rodrigues Manso
- André Filipe Esteves Carvalho
- Pedro Miguel Aparício Dias

Pré-requisitos
Conhecimentos básicos de programação, estruturas de dados e de redes.

Objetivos
1 - Dotar os alunos de conhecimentos teóricos e práticos sobre programação paralela e concorrente
2 - Dotar os alunos de conhecimentos teóricos e práticos sobre sistemas distribuídos.
3 - Dominar as técnicas gerais de concepção, concretização e exploração de sistemas distribuídos.

Programa
1 - Introdução à computação distribuída
2 - Segurança de sistemas distribuído
a. Sistemas confiáveis e ameaças à segurança
b. Mecanismos de segurança
c. Projeto e implementação de sistemas seguros
3 - Programação paralela e concorrente
a. Modelos e arquitetura de sistemas de execução paralela
b. Paralelização de algoritmos
c. Programação com Threads
d. Acesso concorrente a recursos
e. Balanceamento de carga
4 - Programação de sistemas distribuídos
a. Modelos e arquitetura de sistemas distribuídos
b. Programação com Sockets
c. Execução remota de procedimentos
d. Programação com serviços
5- Programação de dispositivos móveis
a. Introdução à mobilidade digital
b. Ambientes de desenvolvimento e API's de programação.

Metodologia de avaliação
Trabalhos práticos 60% - Mínimo de 10.0 valores em 20.
Exame Teórico : 40% - mínimo de 7.0 valores em 20

Aos alunos que não obtenham mínimos nos trabalhos práticos será facultado um exame prático em substituição dos mesmos.

Bibliografia
- Marques, J. e Guedes, P. (1998). Tecnologia de Sistemas Distribuídos. Lisboa: FCA - Editora de Informática
- Dollimore, J. e Coulouris, G. (2011). Distributed Systems: Concepts and Design. (Vol. 1). USA: Addison Wesley
- Guedes, P. e Alves Marques, J. (1998). Tecnologia de Sistemas Distribuídos. (Vol. 1). Lisboa: FCA
- Cardoso, J. (2010). Programação de Sistemas Distribuídos em Java. Lisboa: FCA

Método de interação
Aulas teóricas expositivas para apresentação dos conteúdos programáticos.
Aulas práticas laboratoriais para resolução de problemas e consolidação de conhecimentos Acompanhamento e orientação no desenvolvimento de projectos de Sistemas Distribuidos

Software utilizado nas aulas
- Java Development Kit
- Netbeans