Ir para o conteúdo

CCT-UFCA/Ciência da Computação/Programação Concorrente

De Wikiversidade

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.

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]
  1. Shaw, A. C. Sistemas E Software De Tempo Real. Bookman Companhia Ed, 2003. ISBN: 9788536301723
  2. TOSCANI, S.; OLIVEIRA, R.; CARISSIMI, A. Sistemas Operacionais e Programação Concorrente. Série didática do II-UFRGS, 2003.
  3. Goetz, B. Java Concorrente na Prática. Alta Books, 2008.

Bibliografia Complementar

[editar | editar código]
  1. ANDREWS, G. R. Concurrent Programming: Principles And Practice. Benjamin Cummings, 1991.
  2. GEHANI, N.; MCGETTRICK, A. Concurrent Programming. Coletânea de artigos canônicos, 1988.
  3. STEVENS, W. R. Unix Network Programming. Prentice Hall, 1990.
  4. BAL, H. Programming Distributed Systems. Prentice Hall, 1990.
  5. TEL, G. Introduction to Distributed Algorithms. Cambridge University Press, 1994.