|
|
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. |