Docente: Luís Caires
Neste módulo (4 sessoes) apresentam-se aspectos essenciais do desenvolvimento de abstrações ao nível das linguagens de programação para suportar o desenvolvimento de sistemas concorrentes. Sera dado enfase aos principios da programacao concorrente, seguindo uma perspectiva historica e critica sobre o desenvolvimento das abstraccoes ao nivel das linguagens de programacao, ilustrando a sua concretizacao em linguagens de varios paradigmas, e focando no desenvolvimento de tecnicas de programacao concorrente baseados em metodologias de verificacao rigorosa (Logica de Hoare), aplicadas a linguagem Java.
AULA 1. Elementos de programacao concorrente. Paralelismo e Concorrencia. Recursos e Controle de Recursos. Construcoes fundamentais da programacao concorrente. Mecanismos de suporte a concorrencia na linguagem Java. Exemplos.
AULA 2. Elementos de Logica de Hoare para programas sequenciais. Monitores como mecanismo de controle de concorrencia. Logica de Hoare para monitores. Aplicacao a linguagens de objectos concorrentes. Pre e Pos condicoes das operacoes de um monitor e propriedades invariantes de um monitor. Exemplos usando a linguagem Java.
AULA 3. Desenvolvimento de varios exemplos de objectos com controle de acesso concorrente e respectivas demonstracoes de correccao: "Buffers" limitados, leitores e escritores, edicao cooperativa.
AULA 4. Suporte a concorrencia nas linguagens de programacao: perspectiva historica. Discussao critica sobre o suporte a concorrencia na linguagem Java. Representacao de monitores de tipo Hoare na linguagem Java. Exercicios.
Towards a Theory of Parallel Programming. C.A.R. Hoare, 1972.
Monitors: An Operating System Structuring Concept. C.A.R. Hoare, CACM, 17-10, 1974.
Concepts and Notations for Concurrent Programming. Gregory R. Andrews, Fred B. Schneider. Computing Surveys, Vol 15, N 1, March 1983.
Concurrent and Distributed Programming. Chapter 14 in "Concepts in Programming Languages", John C. Mitchell, Cambridge University Press, 2003.
java's Insecure Parallelism, Per Brinch Hansen, ACM Sigplan Notices, 34-4, 1999.
Concurrent Programming in Java: Design Principles and Patterns. Doug Lea, Addison-Wesley,1999.
Slides Adicionais sobre Monitores e Logica de Hoare
VER Página principal da disciplina!