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

Implementação de Linguagens

Código: CC4023     Sigla: CC4023     Nível: 400

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

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

Ativa? Sim
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Mestrado 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
M:CC 11 PE a partir do ano letivo de 2014 1 - 6 42 162

Docência - Responsabilidades

Docente Responsabilidade
Luís Miguel Barros Lopes Regente
António Mário da Silva Marcos Florido Regente

Docência - Horas

Teorico-Prática: 3,23
Tipo Docente Turmas Horas
Teorico-Prática Totais 1 3,231
António Mário da Silva Marcos Florido 1,615
Luís Miguel Barros Lopes 1,615
Mais informaçõesA ficha foi alterada no dia 2024-08-26.

Campos alterados: Objetivos, Resultados de aprendizagem e competências, Componentes de Avaliação e Ocupação, Programa, Pre_requisitos

Língua de trabalho

Português - Suitable for English-speaking students

Objetivos

Fornecer aos alunos fundamentos teóricos e técnicas práticas de implementação de linguagens de programação funcionais e imperativas.

Resultados de aprendizagem e competências

Os alunos deverão adquirir as seguintes competências: (a) compreender os princípios utilizados para a implementação de linguagens funcionais com avaliação lazy (como Haskell) em arquiteturas convencionais,os problemas tecnológicos associados ao seu desenvolvimento e as soluções existentes; (b) saber desenhar e implementar um "runtime" para uma linguagem de programação imperativa (ou componentes como um "garbage collector" ou um interpretador).

Modo de trabalho

Presencial

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

Conhecimentos de programação funcional e imperative (e.g. em Haskell, C, Java); conhecimentos de programação de baixo-nível (e.g. em C).

Programa

Módulo sobre linguagens funcionais

Definição de uma linguagem funcional mínima baseada no cálculo-lambda. Semântica estrita vs. não estrita. Estratégias de redução call-by-value e call-by-name. Implementação de funções de ordem superior usando "closures". A máquina abstracta SECD. Estratégia call-by-need e redução de grafos. Arquitetura do Glasgow Haskell Compiler: Tradução para Linguagem Core. Implementação de classes de tipos usando dicionários. Otimização de código por meio de transformações de programa. A máquina abstracta STG. Semântica operacional da STG.

Módulo sobre linguagens imperativas

Introdução à gestão de memória em tempo de execução. "Reference Counting". Introdução à técnica de "Garbage Collection". Algoritmos para "garbage collection" - Mark and Sweep, Mark and Compact, Copy Collection, Generational Garbage Collection - e as suas complexidades espaciais e temporais. Caso de estudo - Java.

Bibliografia Obrigatória

S.L. Peyton Jones; The implementation of functional programming languages. ISBN: 0-13-453325-9
S.L. Peyton Jones; Implementing functional languages. ISBN: 0-13-721952-0
Richard Jones; Garbage collection. ISBN: 978-0-471-94148-4
Benjamin J. Evans, James Gough, Chris Newland; Optimizing Java, O'Reilly Media, 2018. ISBN: ‎1492025798

Métodos de ensino e atividades de aprendizagem

Aulas de exposição, discussão e resolução de exercícios ilustrativos dos conceitos fundamentais da teoria e prática do desenho e implementação de linguagens.

Tipo de avaliação

Avaliação distribuída sem exame final

Componentes de Avaliação

Designação Peso (%)
Teste 40,00
Trabalho prático ou de projeto 60,00
Total: 100,00

Componentes de Ocupação

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

Obtenção de frequência

N/A

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

A avaliação dos alunos faz-se por realização de 2 trabalhos práticos e de dois testes escritos.

Cada trabalho prático terá um peso total de 6 em 20 valores na classificação final da disciplina e cada teste escrito terá um peso de 4 em 20 valores na classificação final da disciplina. A classificação mínima nos testes escritos é de 40%. 

As regras acima aplicam-se igualmente para melhoria de classificação e avaliações especiais.
 

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

Aplicam-se as mesmas regras de cálculo da classificação final.

Melhoria de classificação

Aplicam-se as mesmas regras de cálculo da classificação final.

Observações

O exame de recurso segue os mesmos moldes dos dois testes. A classificação dos trabalhos não pode ser melhorada em época de recurso.
Recomendar Página Voltar ao Topo
Copyright 1996-2025 © 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: 2025-06-14 às 10:23:46 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias