CCT-UFCA/Ciência da Computação/Programação Concorrente
Programa do Componente Curricular
[editar | editar código]| Código: | CC0021 | ||||||||
| Componente Curricular: | Programação Concorrente | ||||||||
| Semestre de Oferta: | 3º Semestre | Tipo: | Disciplina | Caráter: | Optativa | ||||
| Unidade Acadêmica Responsável: | Centro de Ciências e Tecnologia - CCT | ||||||||
| Área: | Complementar | ||||||||
| Créditos: | 4 | Carga horária: | 64 | Teórica: | 32 | Prática: | 32 | Extensão: | - |
| Pré-requisito: | Laboratório de Algoritmos e Estruturas de Dados | ||||||||
| Co-requisito: | |||||||||
| Equivalência: | - | ||||||||
Objetivos
[editar | editar código]Apresentar problemas clássicos de programação concorrente baseada no compartilhamento de variáveis e em troca de mensagens. Ensinar mecanismos de comunicação e sincronização entre processos/objetos concorrentes.
Ementa
[editar | editar código]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. Programação concorrente em UNIX. Algoritmos baseados em variáveis compartilhadas:Dijkstra,Peterson,consenso. Algoritmos baseados em envio de mensagens.
Metodologia
[editar | editar código]A disciplina é conduzida majoritariamente em ambiente de laboratório de informática. As aulas são ministradas com o auxílio de slides, nos quais são apresentados os conceitos teóricos fundamentais. Após a exposição do conteúdo, os estudantes realizam atividades práticas diretamente no computador, desenvolvendo códigos e testando os conceitos apresentados. Esse modelo busca integrar teoria e prática de maneira contínua, proporcionando uma aprendizagem ativa e aplicada.
Avaliação
[editar | editar código]A avaliação da disciplina é realizada de forma contínua, sem a aplicação de provas tradicionais. Durante o curso, são propostas tarefas de casa que devem ser concluídas em prazos estabelecidos. Além disso, há um trabalho final de maior peso, que é o principal elemento de avaliação. Esse trabalho é passado a partir de um certo momento no meio da disciplina, para o estudante ir fazendo ao longo do restante do semestre, e exige prática dos conhecimentos adquiridos, sendo determinante para a nota final.
Bibliografia Básica
[editar | editar código]- Shaw, A. C. Sistemas E Software De Tempo Real. Bookman Companhia Ed, 2003. ISBN: 9788536301723
- TOSCANI, S.; OLIVEIRA, R.; CARISSIMI, A. Sistemas Operacionais e Programação Concorrente. Série didática do II-UFRGS, 2003.
- Goetz, B. Java Concorrente na Prática. Alta Books, 2008.
Bibliografia Complementar
[editar | editar código]- ANDREWS, G. R. Concurrent Programming: Principles And Practice. Benjamin Cummings, 1991.
- GEHANI, N.; MCGETTRICK, A. Concurrent Programming. Coletânea de artigos canônicos, 1988.
- STEVENS, W. R. Unix Network Programming. Prentice Hall, 1990.
- BAL, H. Programming Distributed Systems. Prentice Hall, 1990.
- TEL, G. Introduction to Distributed Algorithms. Cambridge University Press, 1994.