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 aplicar na prática os conceitos da disciplina Sistemas Operacionais, pré-requisito para essa disciplina. O enfoque do curso será a 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 Curso
O 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 proposto abaixo. O Trabalho prático é OBRIGATÓRIO. O trabalho consiste na implementação de um programa, sua apresentação em aula e a entrega de um relatório. A nota final será a média aritmética de três notas: duas NPCs e Trabalho Final. Caso o aluno não atinja a nota mínima deverá prestar o Exame Final (NEF) 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 Addison Wesley 2006 ![]() Elliot Forbes Learning Concurrency in Python Packt Publishing 2017 Material do cursoSlides do curso:Disponibilizamos todos os SLIDES apresentados em sala de aula. A Lista de Exercícios não tem entrega obrigatória, nem vale nota, porém resolve-la poderá ajudar muito nas provas.... Material complementar:Programação concorrente com Python: Introduction to Parallel and Concurrent Programming in Python Python Multitheading Python Multithreading and Multiprocessing Tutorial Java concorrente: Java Concurrency Tutorial Programando Java concorrente Java Programming Tutorial: Multithreading & Concurrent Programming Vídeo das aulas on-line:Recursos AdicionaisPara realização das atividades poderá ser usado uma conta gratuita no AWS Educate. As instruções para cadastro podem ser acessadas em Instruções AWS Educate. Descrição do Trabalho FinalOs detalhes do projeto final da disciplina: Problema da Montanha Russa Vídeo com a explicação do problema da Montanha Russa O projeto deverá ser realizado individualmente. O trabalho prático tem o valor igual a uma NPC. O projeto consiste em fazer uma implementação, apresentar em sala de aula e entregar um relatório descrevendo a solução adotada, os detalhes da implementação e funcionamento, além do código fonte do programa. Será marcada várias datas para apresentação do trabalho. O trabalho escrito poderá ser enviado por e-mail até a data indicada no calendário. 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 finalCalendário (tentativa)Início das aulas: 05/04/2021 Primeira Avaliação (NPC 1): 24/05/2021 (Capítulos 1 a 5) Correção NPC1 Segunda Avaliação (NPC 2): 30/06/2021 (Capítulos 6 a 10) Correção NPC2 Apresentação do Trabalho Final: 05/07/2021 e 28/07/2021 Entrega do Trabalho Final (relatório): 28/07/2021 Prova Final (NEF): 04/08/2021 Fim das aulas: 07/08/2021 |
Cursos >