Plano de Estudos
Programação para Cluster e Multicore PCMul
Contextos
Groupo: 2_MI 2012/13 > 2º Ciclo > Parte Escolar > - > Optativas > 892_1º Sem do Mestrado em Informática
Groupo: 2_MI 2012/13 > 2º Ciclo > Parte Escolar > - > Optativas > 787_Mestrado em Informática - CTP
Groupo: 2_MI 2012/13 > 2º Ciclo > Parte Escolar > - > Optativas > 892_1º Sem do Mestrado em Informática
Groupo: 2_MI 2012/13 > 2º Ciclo > Parte Escolar > - > Optativas > 787_Mestrado em Informática - CTP
ECTS
6.0 (para cálculo da média)
Objectivos
Estudar programação concorrente com ênfase na correção e na produtividade. Aprender novas abstrações de programação para a concorrência que serão úteis para a programação de clusters de computadores multi-core. Introduzir técnicas de raciocínio sobre o comportamento e o desempenho de programas paralelos. Compreender e ser proficiente no uso de diferentes linguagens de programação e nos seus ambientes de desenvolvimento.
Programa
- O modelo de atores. - Programação com streams. - Barreiras. - A abstração Map-Reduce. - Memória transacional por software. - Os alunos irão estudar programas paralelos retirados de diferentes domínios aplicacionais. - Os alunos irão trabalhar com diversas linguagens de programação modernas, incluindo, possivelmente, as linguagens Chapel, Erlang, Go, Haskell, Scala, e Rust.
Método de Avaliação
Métodos de ensino: exposição da matéria em aulas teóricas e acompanhamento aos alunos. Avaliação: - Trabalhos escritos; - Projetos de programação; - Exame final.
Carga Horária
Carga Horária de Contacto -
Trabalho Autónomo - 119.0
Carga Total -
Bibliografia
Principal
- Programming Rust: Fast, Safe Systems Development, Jim Blandy and Jason Orendorff, 2017.:
- The Go Programming Language, Alan Donovan and Brian W. Kernighan, 2016:
- The Pragmatic Programmers, 2013. Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming, Simon Marlow. O'Reilly Media, 2013:
- - Scientific articles. - Programming language reference manuals. - Books on the various programming languages addressed in the course, including: Programming Erlang: Software for a Concurrent World, Joe Armstrong, 2nd edition: