IntroduçãoNo início dos tempos da computação a maioria dos programas realizavam processamento sequencial (batch). Com o aumento da capacidade dos processadores e a demanda dos programas em realizar várias tarefas simultaneamente, tornaram importante as questões de programação concorrente. Atualmente, a profusão de processadores com vários núcleos e a demanda por serviços de rede em nuvens, torna a programação concorrente um tema importante para o futuro profissional. O assunto do curso consiste em uma continuação dos conceitos da disciplina Sistemas Operacionais, pré-requisito para essa disciplina. No entanto, o enfoque será na aplicação e implementação dos conceitos para resolver problemas do mundo real que envolvem concorrência em uma máquina ou uma rede. Objetivos do CursoO objetivo do curso é aprofundar conceitos de programação concorrente e paralela, focados na implementação. A metodologia consiste na exposição dos principais conceitos e mostrar exemplos de problemas e soluções em programação concorrente. AvaliaçãoA avaliação do curso consistirá em 2 (duas) avaliações escritas (NPC) e 1 (um) trabalho prático com valor de NPC. O trabalho prático da disciplina será a implementação de um programa para resolver o problema de programação concorrente proposto abaixo. A nota final será a média aritmética das DUAS melhores notas obtidas (será desprezada a menor nota). Caso o aluno não atinja a nota mínima deverá prestar o Exame Final (NEF) Somente será aplicada segunda chamada mediante justificativa conforme prescreve o Regimento da UECE. Conteúdo programático
BibliografiaDoug Lea Concurrent Programming in Java™: Design Principles and Pattern (2nd Edition) Prentice Hall 1999 Mordechai Ben-Ari Principles of Concurrent and Distributed Programming (2nd Edition) Addison Wesley 2006 Brian Goetz Java Concurrency in Practice Material do cursoSlides do curso:Parte 1 - IntroduçãoParte 2 - Simultaneidade e Paralelismo Parte 3 - Modelagem e Threads Parte 4 - Sincronização Parte 5 - Vivacidade e Métodos Protegidos Parte 6 - Objeto Condição Parte 7 - Propriedades de Concorrência Parte 8 - Redes de Petri Parte 9 - Computação Paralela Material Extra - Revisão de Sistemas Operacionais Lista de Exercício:Lista de Exercício 2012.1Material complementar:Texto com resumo sobre programação concorrente: Issue in Concurrent Programming O pequeno (não tão pequeno...) livro de semáforos: The Little Book of Semaphores Descrição do ProjetoOs detalhes do projeto final da disciplina: O Problema da Montanha Russa O projeto poderá ser realizado individualmente. O projeto consiste em fazer uma implementação e entregar um relatório descrevendo a solução adotada, os detalhes da implementação e um manual de instalação e uso, além do código fonte do programa. Será marcada uma ou mais datas para apresentação e entrega do trabalho. IMPORTANTE: A detecção de plágio nos trabalhos entregues são passíveis de aplicação das penalidades previstas no Regimento da UECE. Cronograma de apresentações do trabalho final04/12/2012: Bruno, Evandro e Felipe. 06/12/2012: Fernando, Francisco Duarte e Marcos Antônio. 11/12/2012: Paulo, Renan e Ruan 13/12/2012: Thais e Windson Calendário (tentativa)Início das aulas: 07/08/2012 Semana SECOMP (não haverá aula): 11-13/09/2012 Resolução da Lista de Exercício e Revisão para prova: 20/09/2012 Primeira Avaliação (NPC 1): 25/09/2012 (Partes 1 a 4) Viagem do professor (não haverá aula): 02/10/2012 Apresentação do andamento do trabalho final: 04/10/2012 Viagem do professor para EWSDN (não haverá aula): 23/10/2012 a 01/11/2012 Semana Universitária (não haverá aula): 19-23/11/2012 Resolução da Lista de Exercício e Revisão para prova: 27/11/2012 Segunda Avaliação (NPC 2): 29/11/2012 (Partes 5 a 9) Apresentação do Trabalho Final: de 04/12/2012 à 13/12/2012 Entrega do Trabalho Final (relatório): 13/12/2012 Prova Final (NEF): 18/12/2012 Entrega NEF e revisão: 18/12/2012 Fim das aulas: 19/12/2012 |
Cursos >