MAC 438 - Programação Concorrente

Primeiro Semestre de 2002

Prof. Francisco Reverbel

. Informações gerais
. Ementa da disciplina
. Assuntos tratados em aula
. Exercícios-programa
        
. Bibliografia
. Lista de discussão da disciplina
. Recursos adicionais na Internet
. Notas finais e notas da recuperação

At work icon Esta página estará em permanente construção até o final do semestre...

Informações Gerais

. Local: IME-USP, bloco B, sala B-6
. Horário: segundas das 10:00 às 11:40, quintas das 8:00 às 9:40
. Pasta xerox CAMAT: número 5
. Avaliação: duas provas e três exercícios-programa
     . Média de provas: MP = (2 * P1 + 3 * P2)/5
     . Prova substitutiva: Está prevista uma terceira prova P3, para alunos que comprovadamente não puderam comparecer à uma das duas provas, P1 ou P2. Quem fizer essa prova terá sua média de provas dada por
MP = max {(2 * P1 + 3 * P3)/5, (P2 + P3)/2}
     . Média de exercícios-programa: MEP = (EP1 + EP2 * EP3)/3
     . Média final: se MP >=5 e ME >= 5
então MF = (2 * MP + ME)/3
senão MF = min {MP, ME}
     . Datas das provas: 06 de maio, 24 de junho e 01 de julho (substitutiva)
. Recuperação: Os alunos que ficarem com média final maior ou igual a 3 e menor que 5 terão direito de fazer recuperação desta disciplina.
     . Se sua média de provas MP foi menor que 5, então você deverá fazer a prova de recuperação no dia 29 de julho, às 10:00.
     . Se sua média de exercícios-programa ME foi menor que 5, então você deverá entregar o exercício-programa de recuperação até o dia 29 de julho, às 10:00.
     . Média de recuperação: se você só precisou fazer a prova, MR = nota da prova
se você só precisou fazer o exercício, MR = nota do exercício
se você precisou fazer ambos:
         se prova >= 5 e exercício >= 5
                 então MR = (2 * prova + exercício)/3
                 senão MR = min {prova, exercício}
     . Nota final: (MF + 2 MR)/3, onde MF é a média final do semestre e MR é a média da recuperação

Assuntos Tratados em Aula

. 25/02: Informações gerais, bibliografia, critério de aprovação, etc. O que é programação concorrente. Motivação para o estudo de programação concorrente.
. 28/02: Capítulo 1 do Andrews, até 1.5.
. 04/03: Seção 1.9 e capítulo 2 do Andrews, até 2.3.
. 07/03: Seções 2.4 e 2.5 do Andrews. (No meu livro a seção 2.5 é intitulada "Producer/Consumer Synchronization", diferentemente do que aparece no índice disponibilizado pelo Andrews.)
. 11/03: Andrews, seções 2.8 (exceto 2.8.1), 3.1 e 3.2 (até a página 98). Lição de casa: ler o final da seção 2.8.2 e a seção 3.2.1.
. 14/03: Andrews, de 3.2.1 a 3.3.1. Lição de casa: ler o final da seção 3.3.1 (tie-breaker para n processos).
. 18/03: Seções 3.3.2 e 3.3.3 do Andrews. Lição de casa: ler o final da seção 3.3.3.
. 01/04: Sinais e memória compartilhada no Unix. Capítulo 4 do Andrews, até 4.2.3. Lição de casa: ler a seção 4.2.4 (bounded buffers).
. 04/04: Andrews, de 4.2.4 a 4.4.1.
. 08/04: Seções 4.4.2 e 4.4.3 do Andrews.
. 11/04: Andrews, seção 4.6 (uma visão bem rápida) e início do capítulo 5 (até 5.1.4).
. 15/04: Andrews, seção 5.2, até 5.2.2.
. 18/04: Exercício: o problema dos fumantes.
. 22/04: Exercício: o problema da ponte com uma pista só.
. 25/04: Exercício: o problema da montanha russa.
. 06/05: Primeira prova.
. 09/05: Seções 5.2.3, 5.2.4 e 5.2.5 do Andrews.
. 13/05: Andrews, seção 5.5 (PThreads) e seção 5.4 (Java), até 5.4.2.
. 16/05: Andrews, seções 5.4.2, 5.4.4 e 5.4.5.
. 20/05: Lea, seções 2.2.7 (Java Memory Model) e 2.4.2 (Splitting Synchronization), até 2.4.2.2.
. 03/06: Lea, seções 2.4.5 (Open Containers), 2.5 (Using Lock Utilities), 3.22 (Monitor Mechanics) e 3.2.4.2 (Single notifications - a técnica "extra notify on interrupt").
. 10/06: Lea, seções 3.3.1.1 (Channels and bounded buffers), 3.3.4 (Confinement and Nested Monitors), 3.4.1.3 (Bounded buffers, usando os semáforos do pacote util.concurrent) e 3.7.1 (Acquire-Release Protocols).
. 13/06: Lea, seção 3.7.2 (Delegated Actions), até 3.7.2.2. Lição de casa: estudar o restante do capítulo 3 (seções 3.7.2.3 e 3.7.3).
. 20/06: Exercícios.
. 24/06: Segunda prova.
. 01/07: Prova substitutiva.

Exercícios-Programa

. Primeiro exercício-programa (ps, pdf, solução incompleta). Prazo: 4 de abril.
. Segundo exercício-programa (ps, pdf). Prazo: 13 de maio.
. Terceiro exercício-programa (ps, pdf). Prazo: (adiado de 27 de junho para) 01 de julho.

Bibliografia

. Gregory R. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming, Addison-Wesley, 1999. ISBN: 0-2013-5752-6. (Ver também a errata.)
. Doug Lea, Concurrent Programming in Java, Second Edition: Design Principles and Patterns (The Java Series), Addison-Wesley, 1999. ISBN: 0-201-31009-0.
. M. Ben-Ari, Principles of Concurrent Programming, Prentice-Hall International, 1982. ISBN: 0-13-701078-8.

Recursos Adicionais na Internet

. Material de apoio disponibilizado pelo autor do livro Foundations of Multithreaded, Parallel, and Distributed Programming.
. Suplemento on-line do livro Concurrent Programming in Java.
. util.concurrent, pacote Java disponibilizado por Doug Lea.


Valid CSS! Valid XHTML 1.0! Last modified: Tue Jul 30 17:22:08 EST 2002
Francisco Reverbel
reverbel at ime.usp.br