Computação Paralela e Distribuída
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Informática |
Ocorrência: 2022/2023 - 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 |
116 |
Plano de Estudos |
2 |
- |
6 |
52,5 |
162 |
Docência - Responsabilidades
Língua de trabalho
Português - Suitable for English-speaking students
Obs.: Há versões em inglês do material de estudo e a bibliografia principal é em língua inglesa.
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
Aulas Teórico/Práticas
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
Aulas Laboratoriais
0. Conceitos importantes da linguagem Python
1. Vetores e Matrizes em Python
2. Introdução ao Paralelismo em Python
3. Utilização de Threads
4. Utilização de Processos
5. Pipelining
6. Pthreads e OpenMP
7. Aplicações com Sockets
8. Aplicações com Sockets (continuação)
9. Webservices
10. Webservices (continuação)
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.
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 |
75,00 |
Trabalho laboratorial |
15,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 |
|
Trabalho laboratorial |
46,00 |
Total: |
144,50 |
Obtenção de frequência
O aluno poderá optar por uma avaliação contínua ou por exame.
NOTAS IMPORTANTES:
1. A obtenção de nota mínima nos mini-testes (7,5 valores), é um requisito para ser aprovado em avaliação contínua.
2. A obtenção de nota mínima no teste (8,5 valores) é um requisito para ser aprovado em avaliação contínua.
3. A aprovação em exame depende de nota igual ou superior a 9,5 valores, valendo 100% da avaliação.
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 (questionários) no Moodle.
- (MTPL) Mini-testes sobre a componente prática: 03. Nota mínima: 7,5 valores
- (MTTP) Mini-testes sobre a componente teórica: 03. Nota mínima da média: 7,5 valores
- (TES) Teste: 01 no final do semestre. Nota mínima: 8,5 valores.
- (EXA) Exame final para colmatar a reprovação na avaliação contínua.
Avaliação contínua (AC): 60% TES + 15% MTPL+ 15% MTTP + 10% AAM
Avaliação por exame final (EF): 100% EXA
Aprovação: AC >= 9,5 ou EF >= 9,5
Observação: Os mini-testes PL e TP serão na mesma aula de laboratório.