Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Área científica / Scientific area
Ciências e Tecnologias da Programação
Departamento / Department
Departamento de Ciências e Tecnologias da Informação
Ano letivo / Execution Year
2022/2023
Pré-requisitos / Pre-Requisites
Algoritmos e Estruturas de Dados Programação Orientada para Objetos
Objetivos Gerais / Objectives
Abordar a engenharia de linguagens de programação utilizando métodos e ferramentas atuais, nas perspectivas de interpretação e compilação.
Objetivos de Aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes) / Learning outcomes
OA1. Conhecer as principais características das diferentes linguagens de programação e ambientes de execução. OA2. Saber especificar linguagens estruturadas utilizando gramáticas regulares. OA3. Saber definir a sintaxe de uma linguagem de programação utilizando gramáticas livres de contexto. OA4. Saber validar código ao nível semântico. OA5. Concretizar geração de código máquina. OA6. Conhecer estratégias de otimização na geração de código. OA7. Conhecer estratégias de gestão automática de memória.
Conteúdos Programáticos / Syllabus
CP1. Panorâmica das diferentes linguagens de programação e suas características. CP2. Gramáticas regulares, expressões regulares. CP3. Análise lexical e tokenização. CP4. Gramáticas livres de contexto e formalismo Backus-Naur (EBNF). CP5. Geradores de parsers e árvore de sintaxe abstrata (AST). CP6. Linguagens interpretadas. CP7. Análise semântica. CP8. Geração de código máquina. CP9. Estratégias elementares de otimização ao nível da AST e do código máquina gerado. CP10. Gestão automática de memória.
Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular units content dovetails with the specified learning outcomes
OA1: CP1 OA2: CP2 OA3: CP3, CP4, CP6 OA4: CP7 OA5: CP7, CP8, CP9, CP10 OA6: CP9 OA7: CP10
Avaliação / Assessment
Avaliação periódica: Teste intercalar (40%), a realizar a meio do semestre Projeto (60%), a entregar e defender durante o período de avaliação (época de exames) Não é possível ser aprovado na UC sem realizar o Projeto, não existindo a possibilidade de avaliação por Exame para 100%. A avaliação em Época Especial consiste na entrega e discussão do Projeto, sendo obrigatório que o mesmo tenha sido iniciado e acompanhado pelo docente durante o período letivo.
Metodologias de Ensino / Teaching methodologies
Serão utilizadas as seguintes metodologias de ensino-aprendizagem(MEA): MEA1: Expositivas, para apresentação da motivação para as matérias abordadas e demonstração de aplicações práticas MEA2: Participativas, através da resolução de exercícios práticos. MEA3: Argumentativas, através de um acompanhamento próximo e discussão das opções seguidas nos projetos.
Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes
OA1: MEA1 OA2: MEA1, MEA2 OA3: MEA1, MEA3 OA4: MEA2, MEA3 OA5: MEA2, MEA3 OA6: MEA1, MEA2 OA7: MEA1, MEA2
Observações / Observations
.
Bibliografia Principal / Main Bibliography
Pedro Reis Santos, Thibault Langlois, Compiladores - da teoria à prática, FCA, 2014. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman, Compilers: Principles, Techniques, and Tools (2nd edition), Pearson Education, 2006.
Bibliografia Secundária / Secondary Bibliography
Terrence Parr, The Definitive ANTLR 4 Reference (2nd Edition), Pragmatic Bookshelf, 2013. Martin Fowler, Domain-Specific Languages, Addison-Wesley Signature Series (Fowler), 2010.
Data da última atualização / Last Update Date
2024-02-16