Esta UC visa expor os estudantes a um conjunto de conhecimentos e competências que lhes permite endereçar o problema cada vez mais relevante da programação de sistemas de software concorrentes e paralelos. Para atingir este objetivo, o curso endereça tanto o tema da programação paralela de larga-escala, orientada para as arquiteturas de “clustering” e de “cloud”, e o desenvolvimento de programas concorrentes, orientado para os sistemas de mulitprocessores.
O tópico da programação paralela endereça as metodologias aplicadas no desenho de programas e aplicações paralelas eficientes, incluindo o modelo map-reduce. O tópico da programação concorrente endereça as propriedades dos programas concorrentes, as técnicas e as gerramentas utilizadas no desenvolvimento de programas concorrentes.
Na componente laboratorial desta UC os estudantes aplicam os conceitos adquiridos nas aulas teóricas no desenvolvimento de programas concorrentes e paralelos, fazendo uso de bibliotecas paralelas pré-existentes (e.g., Hadoop para map-reduce) e de ferramentas para aferir a correção e prever e avaliar o desempenho dos programas.
A escolha da utilização da linguagem de programação Java disponibiliza acesso a uma conjunto considerável de ferramentas; adicionalmente, a natureza orientada ao objeto da linguagem permite o encapsulamento de detalhes qual tal se apresenta conveniente.
Esta UC pretende dar aos estudantes uma formação sólida sobre concorrência. No final da UC espera-se que estudantes compreendam os problemas relacionados com a concorrência e com a execução concorrente de programas, conheçam os mecanismos disponíveis nas linguagens de programação para especificação de programas concorrentes, saibam como desenvolver programas concorrentes corretos e eficientes fazendo uso de padrões e de técnicas de programação comuns.
Saber:
Saber Fazer:
Bibliografia principal:
Horas por crédito | 28 | ||
Horas p/ semana | Semanas | Horas | |
Aulas práticas e laboratoriais | 28.0 | ||
Aulas teóricas | 28.0 | ||
Avaliação | 8.0 | ||
Estudo | 56.0 | ||
Projectos e trabalhos | 48.0 | ||
Total de Horas | 168 | ||
ECTS | 6.0 |