Disciplina: | Sistemas Distribuídos |
Período: | 1º Semestre |
Ano: | 5º |
Creditos: | 3 |
Ano Lectivo: | 2002/2003 |
2a) Objectivos: | Apresentar os conceitos teóricos que fundamentam os sistemas distribuídos genéricos.Apresentar as vantagens inerentes à distribuição de sistemas, a par dos desafios que se levantam à sua implementação. |
2b) Programa: | Introdução aos sistemas distribuídos e à computação em rede. Modelos de comunicação: troca de mensagens, invocação remota. Objectos distribuídos. Nomes: identificação e localização. Sincronização. Replicação, consistência e tolerância a falhas. Segurança. Infraestruturas de sistemas distribuídos. |
2c) Bibliografia: | |
Principal: | Distributed Systems: Principles and Paradigms, A. S. Tanenbaum, M. van Steen, Prentice-Hall, 2002, ISBN 0-13-088893-1 |
Complementar: | Distributed Systems: Concepts and Design, 3rd ed., G.
Coulouris, J. Dollimore, T. Kindberg, Addison-Wesley, 2001, ISBN:
0-201-61918-0. Advanced CORBA Programming with C++, M. Hennig, S. Vinoski, T., Addison-Wesley, 1999, ISBN: 0-201-37927-9. Unix Network Programming- Vols. 1 e 2, W. R. Stevens, Prentice-Hall, 1998, ISBN: 0-13-490012-X e 0-13-081081-9. Advanced Programming in the Unix Environment, W. R. Stevens, Prentice-Hall, 1992, ISBN: 0-201-56317-7. |
Metodologia: | As aulas teóricas são de exposição, apresentadas normalmente com recurso a acetatos. A matéria exposta segue de perto a contida no livro de Tanenbaum e van Steen. Apontamentos ou artigos sobre as matérias não (devidamente) cobertas pela bibliografia indicada, serão fornecidos ou indicados à medida que for oportuno. A cadência de apresentação da matéria será tal que permita aos alunos adquirirem conhecimentos sólidos dos princípios fundamentais da área de Sistemas Distribuídos. Não se pretende a cobertura total da área (mesmo que tal fosse possível), pelo que ramificações do tema e aplicações específicas serão mencionadas mas não enfatizadas. Sempre que fôr adequado, exemplos que ajudem à compreensão dos tópicos serão apresentados. As aulas práticas terão duas componentes: uma, de exposição de certos pormenores de implementação e de utilização (com programação) de sistemas distribuídos; outra, de esclarecimento de dúvidas e de discussão de problemas e tópicos que tenham sido sugeridos para estudo extra-aulas. No período para além das aulas, os alunos serão convidados a resolver exercícios sugeridos, a aprofundar determinados tópicos e a experimentar e criar aplicações distribuídas simples, utilizando ferramentas disponíveis nos sistemas operativos actuais (e.g. rpcgen) ou do domínio público (e.g. Orbit), para o que utilizarão os recursos informáticos existentes no CICA e no DEEC. O sistema operativo clássico de referência é o Unix, nas suas variantes Linux e Digital Unix. |
3a) Modo Avaliação: | Avaliação distribuída com exame final. |
3b) Componentes de Avaliação: | Alunos em regime normal: T - dois minitestes (escritos, 30 minutos de duração, sem consulta de documentação, 5 valores no total); O - opinião dos docentes (baseada na assiduidade, interesse, trabalho e progresso de conhecimentos do aluno, 1 valor). E - exame final (escrito, 2 horas de duração, sem consulta de documentação, 14 valores). Alunos em regime especial: EE - exame final (escrito, 2h30m de duração, sem consulta de documentação, 20 valores). |
3c) Condições para obtenção de frequência: | Não ultrapassagem do número limite de faltas e obtenção de um mínimo de 50% na soma das componentes T e O. |
3d) Fórmula de cálculo da classificação final: | Alunos em regime normal: - 0.25*T + 0.05*O + 0.7*E Alunos em regime especial: - EE |
3e) Provas e trabalhos especiais: | Os alunos que pretenderem efectuar a melhoria de nota, nas épocas correspondentes, submeter-se-ão a um exame escrito cotado para 20 valores e com a duração de 2h30m. |
Observações e comentários adicionais, incluindo pré-requisitos: | Todas as provas escritas serão efectuadas sem consulta
de documentação pessoal. Como pré-requisitos que possibilitem o sucesso no aproveitamento da disciplina, espera-se que os alunos tenham - conhecimentos de programação em C, C++ ou Java; - conhecimentos de utilização de Unix; - conhecimentos básicos de sistemas operativos. |