Saltar para:
Logótipo
Você está em: Início > CC3033
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

Semânticas de Linguagens de Programação

Código: CC3033     Sigla: CC3033     Nível: 300

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

Ocorrência: 2024/2025 - 1S Ícone do Moodle

Ativa? Sim
Página Web: https://www.dcc.fc.up.pt/~nam/Teaching/slp24
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 26 Plano estudos a partir do ano letivo 2021/22 3 - 6 48 162

Docência - Responsabilidades

Docente Responsabilidade
Nelma Resende Araújo Moreira Regente

Docência - Horas

Teórica: 1,85
Práticas Laboratoriais: 1,85
Tipo Docente Turmas Horas
Teórica Totais 1 1,846
Nelma Resende Araújo Moreira 1,846
Práticas Laboratoriais Totais 1 1,846
Nelma Resende Araújo Moreira 1,846

Língua de trabalho

Português

Objetivos

Introdução aos diferentes paradigmas de linguagens de programação e às suas diferentes escolhas/conceitos. Pretende-se estudar as componentes principais das linguagens de programação e algumas das ferramentas usadas para descrever de forma precisa o comportamento das suas primitivas principais. O conhecimento da  descrição precisa do comportamento dos programas que permite melhorar a sua  implementação e eficiência.

Resultados de aprendizagem e competências

No final do semestre pretende-se que o estudante seja capaz de descrever e formalizar os aspetos essenciais de cada paradigma, assim como compreender as ferramentas necessárias ao desenvolvimento de novas linguagens de programação.

Modo de trabalho

Presencial

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

Lógica computacional, Modelos de computação, conhecimentso de linguagens de programação  imperativas. funcionais e se possivel lógicas

Programa

Introdução aos diferentes paradigmas de linguagens de programação. Sintaxe, semântica e implementação de linguagens. Sistemas de transição.
- Linguagens de programação imperativas:


  •  Conceitos gerais: variáveis, atribuição, instruções de controle, blocos;

  •  Semânticas operacionais: máquinas abstratas, semânticas operacionais estruturais;


- Linguagens de programação funcionais:


  • Conceitos gerais, definição de funções, recursão

  • Introdução ao lambda-calculus

  • Sistemas de tipos

  •  Semântica operacional


- Linguagens de programação lógicas:


  • Conceitos gerais: termos, predicados, clausulas, unificação, resolução 

  • Universo de Herbrand

  • Semântica operacional e denotacional

Bibliografia Obrigatória

Hanne Riis Nielson; Semantics with applications. ISBN: 978-1-84628-691-9
Maribel Fernández; Programming languages and operational semantics. ISBN: 0-9543006-3-7

Bibliografia Complementar

Thérèse Hardin, Mathieu Jaume, François Pessaux, Véronique Viguié Donzeau-Gouge; Concepts and Semantics of Programming Languages: a semantical approach with Python and Ocaml , Wiley, 2021. ISBN: 9781786305305
Flemming Nielson; Formal methods. ISBN: 978-3-030-05156-3 (Ebook)
Robert W. Sebesta; Concepts of Programming Languages, Pearson, 2018. ISBN: 9780135102268
Kent D. Lee; Foundations of Programming Languages, Springer, 2017. ISBN: 978-3-319-70789-1
Richard Bird; Introduction to functional programming using Haskell. ISBN: 978-0-13-484346-9 pbk

Métodos de ensino e atividades de aprendizagem

Aulas expositivas e aulas de resolução de problemas e casos de estudo.
Avaliação distribuída sem exame final. Serão propostos dois testes com peso de 50%.



Serão propostos trabalhos de resolução de problemas sobre os diversos tópicos da matéria. Poderão ser também propostos trabalhos práticos de implementação dos conceitos expostos. Assim serão assegurados os objetivos propostos. Os testes e exame final têm como objetivo garantir que os objetivos principais da aprendizagem foram atingidos.

Software

Linguagem Prolog
Linguagem Haskell
Programming Languages Zoo (http://plzoo.andrej.com)

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Exame 50,00
Teste 50,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Estudo autónomo 114,00
Frequência das aulas 48,00
Total: 162,00

Obtenção de frequência

Assistência a 3/4 das aulas práticas.

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

Os alunos deverão obter um mínimo de 6 valores (em 20) em cada um dos testes. O primeiro realiza-se a meio do semestre e o segundo na data prevista para o exame normal.

Teste intercalar (50% de peso na nota final).
Exame final (50% de peso na nota final).
Sendo TI a classificação obtida  no teste intercalar e EF a
classificação obtida no exame final, então a nota final é dada por:
F = TI*(0.5) + EF*(0.5)
TI,EF >= 6 e F >= 9.5

O exame de recurso é para 20 valores e têm acesso os estudantes com frequência.

Provas e trabalhos especiais

Poderá haver um trabalho prático  com a cotação até 3 valores da nota total (na época normal e de recurso).

Avaliação especial (TE, DA, ...)

Os critérios de avaliação são os mesmos para todos os estudantes.

Melhoria de classificação

Será possível fazer melhoria de classificação em época de recurso.

Observações

Aconselhada aprovação a Lógica Computacional
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-11-09 às 07:50:30 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias