Objetivos e enquadramento
- compreender os princípios fundamentais de concorrência e as principais problemáticas relacionadas com a concorrência e com a execução concorrente de programas.
- conhecer as especificidades das arquiteturas de memória partilhada que são relevantes para o desempenho de uma aplicação concorrente, como o fluxo de dados e o processamento das instruções, o funcionamento da memória, e a sincronização e coerência dos dados em memória.
- conhecer os princípios teóricos que fundamentam um bom e correto desenho de uma aplicação concorrente, com particular ênfase nos conceitos e aspetos formais da sincronização.
- estar familiarizado com as principais primitivas de sincronização existentes para o desenvolvimento de aplicações concorrentes e ser capaz de modelar e implementar estruturas de dados, ferramentas e/ou aplicações concorrentes correta e eficientemente, usando primitivas/bibliotecas duma linguagem de programação atual para programação em memória partilhada utilizando processos e/ou threads.
Introduce students to the fundamental theoretic and practical principles of concurrency, with emphasis on the correctness, design and implementation of models of concurrent computation using shared memory architectures.
Learning outcomes and competencies
At the end of the course, students are expected to:
- understand the fundamentals of concurrency, the key issues related to the execution of concurrent programs and the specificities of modern shared memory architectures which are relevant to the performance of concurrent programs.
- be able to apply the theoretical principles which guide a good and correct design of a concurrent program, with particular emphasis on the concepts and formal aspects of synchronization.
- know the main synchronization primitives/libraries for the development of concurrent programs and be able to model and implement concurrent data structures, programs and/or applications correctly and efficiently by using primitives/libraries of modern programming languages for shared memory programming using processes and/or threads.
Programa e conteúdos/Syllabus Part I
O programa da parte I da unidade curricular inclui os seguintes tópicos:
- Conceitos básicos de programação concorrente / Basic notions of concurrent programming
- Noções básicas de Concorrência/ Basic notions of concurrency
- Sistemas de transições/ Labeted transition Systems
- CCS: Calculus of Communicating Systems:
- sequência, composição, sincronização; prefix, composition, sinchronisation
- restrição e reetiquetagem; restriction and relabelling
- parâmetros e dados; parameters and values
- Comportamento observável/ Observable behaviour
- relações de equivalência, congruência, bissimulações; congruência observável/congruences, bisimulations/cobservable congruence
- propriedades/ properties