Publicação em Diário da República: Despacho n.º16228/2009 - 15/07/2009
6 ECTS; 3º Ano, 1º Semestre, 28,0 T + 42,0 PL + 5,0 OT + 5,0 O , Cód. 911925.
Docente(s)
            - António Manuel Rodrigues Manso  (2)
- Pedro Miguel Aparício Dias  (2)
(1) Docente Responsável
(2) Docente que lecciona
Pré-requisitos
          Conhecimentos básicos de programação, estruturas de dados e de redes.
Objetivos
          Dotar os alunos de conhecimentos teóricos e práticos sobre sistemas distribuídos.
Dominar as técnicas gerais de concepção, concretização e exploração de sistemas distribuídos.
Programar aplicações distribuídas.
Programa
          1 - Introdução aos sistemas distribuídos
2 - Programação paralela e concorrente
    - Métodos de paralelização de algoritmos
    - Programação com Threads
    - Acesso concorrente a recursos
    - Balanceamento de carga
3 - Programação de sistemas distribuídos
   - Programação com Sockets
   - Programação com objectos remotos
   - Segurança de sistemas distribuídos 
4 - Programação Web Distribuída
   - protocolos web
   - Arquitectura web
   - Web Serviçes
   - Programação de dispositivos móveis.
Metodologia de avaliação
          Trabalho prático sobre programação concorrente  10%
Trabalho prático sobre programação distribuída  15 %
Trabalho prático sobre programação Web distribuída  15 %
Projecto Final  30 %
Exame Teórico  30%
Bibliografia
          -  Cardoso, J. (2010). Programação de Sistemas Distribuídos em Java. Lisboa:  FCA
-  Coulouris, G.  e Dollimore, J. (2011). Distributed Systems: Concepts and Design. (Vol. 1). USA:  Addison Wesley
- Alves Marques, J.  e Guedes, P. (1998). Tecnologia de Sistemas Distribuídos. (Vol. 1). Lisboa:  FCA
- Blair, G.  e Kindberg, T.  e Dollimore, J.  e Coulouris, G. (2011). Distributed Systems: Concepts and Design. .:  Addison Wesley
- Cardoso, J. (2008). Programação de Sistemas Distribuídos em Java. Lisboa:  FCA - Editora de Informática
- Guedes, P.  e Marques, J. (1998). Tecnologia de Sistemas Distribuídos. Lisboa:  FCA - Editora de Informática
Método de Ensino
          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
          

















