Cursos‎ > ‎

Programação Concorrente e Paralela 2020.2

Introdução

No 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ção

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

Será aplicada uma terceira NPC no final do semestre que servirá como segunda chamada das NPC 1 e NPC 2. O assunto da prova será toda a matéria. É facultado a todos os alunos fazer a NPC 3, sendo que será aproveitado as duas melhores notas (será desprezada a menor nota).

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

  1. Introdução
  2. Simultaneidade e Paralelismo
  3. Modelagem e Threads
  4. Sincronização
  5. Vivacidade e Métodos Protegidos
  6. Objeto Condição
  7. Propriedades de Concorrência
  8. Redes de Petri
  9. Computação Paralela

Bibliografia






Doug 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











http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601
Brian Goetz
Java Concurrency in Practice
Addison Wesley
2006







Elliot Forbes 
Learning Concurrency in Python 
Packt Publishing
2017








Material do curso

Slides do curso: 

Disponibilizamos todos os SLIDES apresentados em sala de aula.

Lista de Exercício:

Lista de Exercícios não tem entrega obrigatória, nem vale nota, porém resolve-la poderá ajudar muito nas provas....

Material complementar:

O pequeno (não tão pequeno...) livro de semáforos: The Little Book of Semaphores 



Java concorrente: Java Concurrency Tutorial

Vídeo das aulas on-line:

1 - Introdução: Parte_1 Parte_2
2 - Revisão de Sistemas Operacionais: Parte_1 Parte_2
3 - Simultaneidade e Paralelismo: Parte_1 Parte_2
4 - Modelagem e Threads: Parte_1 Parte_2
5 - Sincronização: Parte_1 Parte_2
6 - Vivacidade e Método Protegido: Parte_1 Parte_2
7 - Objeto Condição: Parte_1 Parte_2
8 - Propriedades de Concorrência: Parte_1 Parte_2
9 - Redes de Petri: Parte_1 Parte_2
10 - Computação Paralela: Parte_1 Parte_2

Recursos Adicionais

Para 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 Final

Os detalhes do projeto final da disciplina: Problema 

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 final


Calendário (tentativa)

Início das aulas: 05/04/2021

Primeira Avaliação (NPC 1): xx/xx/20xx (Capítulos 1 a 5)

Semana Universitária (não haverá aulas): xx/xx/20xx à xx/xx/20xx 

Semana da Computação - SECOMP (não haverá aulas): xx/xx/20xx à xx/xx/20xx 

Segunda Avaliação (NPC 2): xx/xx/20xx (Capítulos 6 a 10)

Terceira Avaliação (NPC 3): xx/xx/20xx (Capítulos 1 a 10) (opcional)

Apresentação do Trabalho Final: xxx/xx/20xx e xx/xx/20xx

Entrega do Trabalho Final (relatório): xx/xx/20xx

Prova Final (NEF): xx/xx/20xx

Fim das aulas: 28/07/2021

Comments