UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 DIVISÃO DE ASSUNTOS ACADÊMICOS Secretaria Geral de Cursos PROGRAMA DE DISCIPLINA DEPARTAMENTO DE CIÊNCIAS EXATAS CÓDIGO: EXA842 DISCIPLINA: PROGRAMAÇÃO CONCORRENTE CARGA HORÁRIA: 60h EMENTA: Conceitos básicos: processos, threads, interrupções, escalonamento. Aspectos de implementação e concorrência. Propriedades de segurança e imparcialidade. Modelos de concorrência. Semântica e implementação de mecanismos de sincronização. Problemas de programação concorrente: deadlock, alocação de recursos, leitura e escrita concorrente, exclusão mútua, consenso. Semântica e implementação de mecanismos de comunicação. Algoritmos baseados em variáveis compartilhadas: Dijkstra, Peterson, consenso. Algoritmos baseados em envio de mensagens. OBJETIVOS: Geral: • Discutir e aplicar mecanismos relacionados ao desenvolvimento de software concorrentes e distribuídos, enfatizando a prática com uso de Java. Específicos: • Entender os conceitos básicos relacionados ao tema; • Estudar algoritmos clássicos de concorrência; • Aprender e utilizar os recursos da linguagem de programação Java para desenvolvimento de software concorrente; • Projetar e implementar software concorrente / distribuído; • Analisar estratégias de validação de programas concorrentes. METODOLOGIA: O curso será formado por um conjunto de atividades: i) Aulas Expositivas; ii) Práticas de Labora tório; iii) Seminários e iv) Projeto de Software. A seguir apresentamos os alcances de cada uma destas estratégias metodológicas: • Um conjunto de problemas e exercícios serão propostos para aplicação prática em laboratório. O curso será for temente baseado nestas práticas. • Alguns seminários serão propostos p ara apresentação por p ar te dos alunos. - 1 de 4 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 METODOLOGIA (Continuação): Devem ser aborda dos nestes seminários temas clássico, como apresentação de alguns algoritmos mais conhecidos e temas relacionados à tecnologias atuais associados à programação concorrente; • Será definido também um projeto de software com características de concorrência e distribuição para desenvolvimento pelos alunos. O objetivo é fornecer a oportunidade de desenvolver um software com complexidade maior do que a dos exercícios propostos nas práticas de laboratório; • As aulas expositivas serão dialogadas com o objetivo de introduzir assuntos que serão tratados mais detalhadamente nos exercícios e / ou que não foram cobertos. Material Utilizado Para as Práticas de Laboratório e desenvolvimento do software: • Laboratório com uma máquina para cada um ou dois alunos. Laboratório com quadro branco e kit para escrever no quadro. Para as Aulas Expositivas e seminários: • Salas tradicionais de aula, com quadro negro ou branco, kit para escrever nos quadros, retro - projetor, computador e canhão multimídia. Para as CIs: • Sala do professor com quadro branco, kit para escrever nos quadros, computador, impressora, cadeiras e mesa. AVALIAÇÃO: O componente optativo será dividido em duas unidades, para que o estudante possa refletir sobre sua situação na metade do curso e, caso necessário, realizar correções de rumo no processo de aprendizagem. Primeira unidade: • Para a primeira unidade será realizada uma avaliação teórica a respeito dos conceitos discutidos no curso (AT); • Os seminários também serão considerados nesta unidade (SM). • A média da primeira unidade será calculada d a seguinte forma: ○ 0,6 X AT + 0,4 X SM Segunda unidade • Será realizada uma prova prática. Em laboratório os alunos devem implementar um programa com características de concorrência para resolver um problema passa do pelo professor (AP); • O projeto / apresentação do software (PJ). • A média da segunda unidade será: ○ 0,5 X AP + 0,5 X PJ - 2 de 4 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 AVALIAÇÃO (Continuação): • A média ponderada de cada unidade será transformada em um conceito, utilizando as escalas tradicionais de conversão de notas para conceitos usadas na UEFS. Os dois conceitos resultantes serão os conceitos finais para a avaliação do s alunos; • As datas para entrega dos produtos da resolução dos problemas serão definidas ao longo do curso. Provas Finais: • Não obtendo conceito suficiente na avaliação do componente optativo, o estudante poderá fazer prova final, e o conceito final será de acordo com o sistema de avaliação vigente na UEFS. Aprovação no componente optativo: Para ser aprovado no componente optativo, o estudante precisa cumprir os seguintes requisitos: • Ter freqüência igual ou superior a 75% da carga horária efetiva ministrada no componente optativo, caso contrário haverá reprovação por freqüência e o componente optativo completo deverá ser cursado novamente; • Ser aprovado na avaliação do componente optativo, caso contrário haverá reprovação por conceito; • Caso o requisito de freqüência seja atendido e o estudante seja reprovado no processo de avaliação, passa a ser opcional a freqüência às atividades acadêmicas ordinárias do respectivo componente optativo em períodos letivos posteriores, embora a universidade deva reservar espaço para o estudante dentre as vagas semestrais do componente e este deva se matricular novamente no componente optativo; neste caso, o estudante deve refazer as atividades de avaliação no(s) período(s) seguinte(s), até que tenha concluído o componente. Havendo dificuldades para os estudantes com reprovação no componente optativo em período(s) anterior(es) freqüentarem as atividades de avaliação, o corpo docente responsável pelo componente poderá fazer avaliações em separado para estes estudantes. CONTEÚDO PROGRAMÁTICO: 1) • • • • 2) • • • • • Conceitos básicos Processos Threads Exclusão mútua Região crítica Programação concorrente em Java: Threads Syncrhonized RMI EJB Outros - 3 de 4 - UNIVERSIDADE ESTADUAL DE FEIRA DE SANTANA Autorizada pelo Decreto Federal nº 77.496 de 27/04/76 Reconhecida pela Portaria Ministerial nº 874/86 de 19/12/86 Recredenciada pelo Decreto Estadual Nº 9.271 de 14/12/2004 CONTEÚDO PROGRAMÁTICO (Continuação): 3) Mecanismos de sincronização • Semáforos • Monitores • Troca de mensagens 4) Algoritmos concorrentes: • Peterson • Consenso • Dijkstra • Outros 5) Modelos de estruturação de Programa s Distribuídos • RPC • CORBA • RMI, EJB • Socket s REFERÊNCIA BIBLIOGRÁFICA: Lea, D.; Concurrent Programming in Java: Design principles and patterns Addison Wesley, 1997 ECKEL, B. Thinking in Patterns with Java. 1a. ed. MindView, 2003. Henri Bal - Programming Distributed Systems - Prentice Hall, 1990. Gerard Tel - Introduction to Distributed Algorithms - Cambridge Universi ty Pres s, 1994. Gregory Andrews - Foundations of Multithreaded, Parallel and Distributed Programming - Addison -Wesley, 1999. Z. Tari - Fundamentals of Distributed Object Systems - John Wiley & Sons, 2001 - 4 de 4 -