Programação Concorrente
Código
01061540Créditos ECTS
3Objetivos
São objetivos desta UC dotar os alunos com conhecimentos e competência suficientes para a programação de aplicações concorrentes.
No fim da UC os alunos serão capazes de:
- Compreendera os conceitos teóricos relacionados com programação concorrente e paralela
- Compreender os ganhos, benefício, limitações do uso de programação concorrente
- Compreender, comparar e avaliar diversos modelos de programação concorrente
- Avaliar a aplicabilidade e aplicar diversas tecnologias de programação concorrente
- Aplicar tecnologias de programação concorrente no desenvolvimento de aplicações
Programa
1. Tipos de modelos de paralelismo (bit, instrução, dados, tarefas)
2. Programação Paralela vs. programação concorrente
3. Modelos de concorrência
4. Programação multitarefa
5. Sincronização no acesso aos dados
6. Programação funcional
7. Programação assíncrona
8. Hadoop e Map reduce
Métodos de Ensino
As metodologias de ensino pretendem fomentar a aprendizagem baseada em resolução de problemas, reforçando-se a componente prática, a aprendizagem ativa, o trabalho autónomo e a responsabilização do estudante.
As aulas teóricas incluem segmentos expositivos, onde são apresentados conceitos com recurso a exemplos, e demonstrações, que ilustram conceitos de concorrência e paralelismo. As aulas de laboratório são preenchidas pela apresentação e discussão com os alunos da resolução de problemas e fichas de trabalho.
São igualmente utilizadas atividades de tutoria e de apoio à realização dos trabalhos em grupo. Nas aulas de laboratório utilizam-se métodos de ensino baseados em aprender fazendo.
Bibliografia
Paul Butcher, 2014, Seven Concurrency Models in Seven Weeks, The Pragmatic Programmers;
Caleb Hattingh, 2018, Using Asyncio in Python: Understanding Python's Asynchronous Programming Features, O'Reilly Media, Inc.;
Tom White, 2015, Hadoop: The Definitive Guide, 4th Edition, O'Reilly Media, Inc. ; Other technical reports and scientific papers