Computação Paralela e Distribuída
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Informática |
Ocorrência: 2021/2022 - 2S
Ciclos de Estudo/Cursos
Sigla |
Nº de Estudantes |
Plano de Estudos |
Anos Curriculares |
Créditos UCN |
Créditos ECTS |
Horas de Contacto |
Horas Totais |
INF |
112 |
Plano de Estudos |
2 |
- |
6 |
52,5 |
162 |
Docência - Responsabilidades
Língua de trabalho
Português
Obs.: Pode ser mostrado algum material em inglês
Objetivos
Os estudantes deverão ser capazes de conhecer e compreender as técnicas e paradigmas da computação paralela e distribuída de modo a conceber algoritmos e aplicações multithread que envolvam comunicação entre computadores.
Resultados de aprendizagem e competências
Enuncia e compara diversas topologias de redes de computadores e descreve corretamente o funcionamento das redes locais (cabeadas ou não) e da Internet e dos paradigmas cliente/servidor e
peer-to-peer.
Enuncia os diversos modelos da computação paralela e da computação distribuída.
Programa e descreve o funcionamento dum programa que utiliza técnicas de multiprogramação como semáforos.
Programa aplicações para computadores que façam uso dos recursos do computador de forma eficiente usando e dominando técnicas de multiprogramação e sincronização de threads/processos e programação paralela a partir dum problema.
Resolve problemas da sua área recorrendo a diferentes abordagens da computação paralela e distribuída.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
É desejável que os estudantes tenham conhecimento prévio de linguagens e ambientes de programação e sistemas operativos incluindo algoritmos de escalonamento. Noções de programação REST para a web devem ser adquiridas se não existentes.
Programa
1. Introdução à computação paralela
2. Arquitecturas de sistemas paralelos
3. Programação com bibliotecas de computação paralela
4. Introdução aos sistemas distribuídos
5. Computação paralela vs computação distribuída
6. Modelos e arquitecturas de sistemas distribuídos
7. Networking e protocolo TCP/IP
8. Transacções, falhas e segurança
9. Web Services e Cloud Computing
Bibliografia Obrigatória
Tanenbaum Andrew; Distributed Systems: Principles and Paradigms, 2017
T. Rauber, G. Runger; Parallel Programming for Multicore and Cluster Systems, 2013. ISBN: 978-3-642-37801-0
Bibliografia Complementar
Kai Hwang, Geoffrey C. Fox, Jack J. Dongarra; Distributed and Cloud Computing - From Parallel Processing to the Internet of Things, 2012
C. Lin, L. Snyder; Principles of Parallel Programming, 2009. ISBN: 978-0-321-48790-2
Observações Bibliográficas
Os elementos de apoio à disciplina encontram-se no Moodle.
Métodos de ensino e atividades de aprendizagem
Aulas TP: As aulas TP recorrerão à demonstração e resolução de situações potencialmente problemáticas com recurso a meios computacionais, com vista à introdução das diferentes técnicas de programação paralela e distribuída que compõem o conteúdo programático da UC.
Aulas Práticas: resolução de exercícios de uma forma mais autónoma, num ambiente de desenvolvimento, sendo possível o aluno utilizar o próprio computador se desejar ou enquanto estivermos em lecionação não presencial.
Elaboração de trabalhos práticos ao longo do semestre, certificadores das várias técnicas lecionadas.
Software
VSCode
MinGW
PyCharm
Python3
Palavras Chave
Ciências Físicas > Ciência de computadores > Programação > Engenharia de software
Ciências Tecnológicas > Tecnologia > Tecnologia de computadores > Tecnologia de software
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Participação presencial |
10,00 |
Teste |
60,00 |
Trabalho escrito |
10,00 |
Trabalho laboratorial |
20,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Frequência das aulas |
52,50 |
Estudo autónomo |
46,00 |
Trabalho escrito |
30,00 |
Trabalho laboratorial |
16,00 |
Total: |
144,50 |
Obtenção de frequência
O aluno poderá optar por uma avaliação contínua ou por exame. Em ambos os casos terá que defender um dos trabalhos práticos em discusão oral.
NOTAS IMPORTANTES:
1. A aprovação da componente Laboratorial, com adesão às regras estabelecidas de frequência e submissão de trabalhos, é um requisito para ser aprovado na disciplina.
2. Independentemente do aluno optar pela avaliação por exame ou por avaliação contínua, é ABSOLUTAMENTE OBRIGATÓRIA a inscrição prévia nas provas de avaliação DENTRO DOS PRAZOS ESTABELECIDOS. As inscrições efetuam-se através da plataforma Moodle.
Aos alunos que não se encontrarem inscritos dentro dos prazos previamente estabelecidos será vedado o acesso à respetiva prova.
Fórmula de cálculo da classificação final
- (AAM) Auto-avaliações no Moodle: 2 por aula TP
- (TPC) Trabalhos para casa: 1 por semana
- (LAB) Trabalhos de laboratório: 1 a cada uma ou duas semanas
- (TES) Dois mini-testes a agendar para o meio e o final do semestre. Nota mínima em cada um: 9 valores.
- (EXA) Exame final para colmatar a reprovação na avaliação contínua
Avaliação contínua (AC): 60% TES + 20% LAB + 10% TPC + 10% AAM
Avaliação por exame final (EF): 80% EXA + 20% LAB
Aprovação: AC >= 9,5 ou EF >= 9,5