Saltar para:
Logótipo
Você está em: Início > CC3040
Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Programação Concorrente

Código: CC3040     Sigla: CC3040

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2022/2023 - 2S Ícone do Moodle

Ativa? Sim
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Licenciatura em Ciência de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L:CC 31 Plano estudos a partir do ano letivo 2021/22 3 - 6 56 162
L:IACD 0 Plano Oficial a partir do ano letivo 2021/22 3 - 6 56 162
Mais informaçõesA ficha foi alterada no dia 2023-02-15.

Campos alterados: Bibliografia Obrigatória, Componentes de Avaliação e Ocupação

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

O objetivo principal é fornecer uma formação sólida sobre concorrência, com particular ênfase nos princípios fundamentais de concorrência e no desenho e implementação de modelos de computação concorrente em arquiteturas de memória partilhada, assim como dos principais problemas inerentes.

Resultados de aprendizagem e competências

Ao completar a UC espera-se que o estudante adquira as seguintes competências:

  • compreender os princípios fundamentais de concorrência e as principais problemáticas relacionadas com a concorrência e com a execução concorrente de programas.
  • conhecer as especificidades das arquiteturas de memória partilhada que são relevantes para o desempenho de uma aplicação concorrente, como o fluxo de dados e o processamento das instruções, o funcionamento da memória, e a sincronização e coerência dos dados em memória.
  • conhecer os princípios teóricos que fundamentam um bom e correto desenho de uma aplicação concorrente, com particular ênfase nos conceitos e aspetos formais da sincronização.
  • estar familiarizado com as principais primitivas de  sincronização existentes para o desenvolvimento de aplicações concorrentes e ser capaz de modelar e implementar estruturas de  dados, ferramentas e/ou aplicações concorrentes correta e  eficientemente, usando primitivas/bibliotecas duma linguagem de programação atual para programação em memória partilhada utilizando processos e/ou threads.

Modo de trabalho

Presencial

Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)

Aprovação em Lógica Computacional e  Sistemas de Operação

Programa


  • Conceitos básicos: tipos de arquiteturas e de aplicações concorrentes. Concorrência como abstração de paralelismo. Distinção entre concorrência e paralelismo, entre programa sequencial e programa concorrente, e entre programação sequencial, concorrente, paralela e distribuída. Processos.

  • Introdução aos modelos: abstração, especificação e modelação de sistemas; sistemas de transição etiquetados (LTS): estados, ações atómicas, comportamento e equivalência; conceitos básicos dum cálculo de processos como prefixo de ações, escolha, composição (paralela), guardas. Modelos assíncronos e síncronos. Intercalação. Ações atómicas partilhadas. Propriedades de correção: safety, liveness e fairness.

  • Princípios de sincronização: distinção entre comunicação e sincronização, e entre competição e cooperação. Operações atómicas em hardware e em software. O problema da região crítica. Starvation versus deadlock. Requisito para a ocorrência de deadlocks. Inversão de prioridade. Problemas clássicos de sincronização.

  • Primitivas de sincronização: principais primitivas de sincronização -- locks, semáforos, monitores e barreiras -- e diferentes abordagens de implementação.

  • Programação com processos e com threads:distinção entre processos e threads. Principais benefícios e implicações da utilização de processos multithreaded. User threads versus kernel threads. Modelo de programação concorrente tendo por base a utilização de: (i) processos em conjunto com técnicas avançadas de mapeamento de memória; (ii) processos multithreaded utilizando bibliotecas duma linguagem de programação atual.

Bibliografia Obrigatória

Herlihy Maurice; The art of multiprocessor programming. ISBN: 9780123705914
Aceto Luca 070; Reactive systems. ISBN: 978-0-521-87546-2
Joe Armstrong; Concurrent programming in ERLANG. ISBN: 9780135083017

Bibliografia Complementar

Michel Raynal.; Concurrent Programming: Algorithms, Principles and Foundations. , Springer, 2012
Roberto Gorrieri, Cristian Versari; Introduction to Concurrency Theory, Springer, 2015
Ben-Ari M. 1948-; Principles of concurrent and distributed programming. ISBN: 9780321312839 pbk
Gregory R. Andrews; Foundations of Multithreaded, Parallel, and Distributed Programming., 2000
R. Milner; Communication and concurrency. ISBN: 0-13-115007-3

Métodos de ensino e atividades de aprendizagem

Aulas teóricas de exposição dos tópicos do programa e aulas práticas laboratoriais para demonstração e desenvolvimento de programas. Para a modelação serão usados simuladores de sistemas de transição ou máquinas de estados.

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Trabalho laboratorial 40,00
Teste 60,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 56,00
Frequência das aulas 56,00
Elaboração de projeto 50,00
Total: 162,00

Obtenção de frequência

Serão registadas as presenças às aulas práticas. Perde a frequência por falta de assiduidade o estudante que faltar a mais de 25% das aulas práticas previstas.

Cada um dos dois testes da disciplina tem uma nota mínima de 6 valores em 20.

Fórmula de cálculo da classificação final

A nota final (NF) é obtida pela ponderação das notas da avaliação parciais do seguinte modo:

NF = 4 * Trab1 + 4 * Trab2 + 6 * Test1 + 6 * Test2 

onde:

Trab1 = Trabalho 1
Trab2 = Trabalho 2
Test1 = Primeiro teste
Test2 = Segundo teste

Recomendar Página Voltar ao Topo
Copyright 1996-2024 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2024-07-27 às 21:21:47 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias