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

Compiladores

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

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

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

Ativa? Sim
Página Web: http://www.dcc.fc.up.pt/~pbv/aulas/compiladores
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:B 0 Plano de Estudos Oficial 3 - 6 48 162
L:CC 68 Plano estudos a partir do ano letivo 2021/22 3 - 6 48 162
L:F 3 Plano de Estudos Oficial 2 - 6 48 162
3
L:G 0 Plano estudos a partir do ano letivo 2017/18 2 - 6 48 162
3
L:M 0 Plano de Estudos Oficial 2 - 6 48 162
3
L:Q 0 Plano estudos a partir do ano letivo 2016/17 3 - 6 48 162

Língua de trabalho

Português

Objetivos

Estudo e implementação dos conceitos e técnicas usados para a construção de compiladores e interpretadores de linguagens de programação imperativas.

Resultados de aprendizagem e competências


No final desta UC os estudantes deverão ser capazes de:
1) Conhecer a decomposição em fases de um compilador: análise léxica, análise sintática, análise semântica, geração de código intermédio e geração de código de máquina
2) Compreender os conceitos de sintaxe concreta e abstrata e linguagem intermédia
3) Implementar um compilador para uma pequena linguagem imperativa estruturado seguindo as fases do ponto 1)

Modo de trabalho

Presencial

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

Conhecimentos básicos em programação imperativa e funcional.
Conhecimento básico de linguagem assembly (MIPS).
Modelos de computação (expressões regulares, automatos finitos e gramáticas livres de contexto).

Programa

Introdução ao processamento de linguagens de programaçao. Compiladores versus Interpretadores. Análise Léxica. Geradores automáticos de analisadores léxicos. Sintaxe abstracta. Análise sintáctica usando técnicas LL, LR e LALR. Geradores de analisadores sintáticos (parsers). Análise semântica: tabelas de símbolos, verificação de tipos. Registos de activação. Tradução para código intermédio. Geração de código: grafo de controlo de fluxo de dados, alocação de registos. 

Bibliografia Obrigatória

Torben Mogensen; Basics of Compiler Design, 2010 (http://hjemmesider.diku.dk/~torbenm/Basics/)
Appel Andrew W. 1960-; Modern compiler implementation in ML. ISBN: 978-0-521-60764-3 pbk

Bibliografia Complementar

Andrew W. Appel; Modern compiler implementation in C. ISBN: 0-521-58390-X
Louden Kenneth C.; Compiler construction. ISBN: 978-0-534-93972-4 hbk

Métodos de ensino e atividades de aprendizagem

Aulas teóricas presenciais com exposição de conceitos suportada por projeção de slides e demonstração interativa.

Aulas laboratoriais presenciais com resolução de exercícios propostos e acompanhamento do projeto prático.

Projecto prático para grupos de 2 estudantes: construção de um compilador de uma pequena linguagem imperativa.

Utilização do GitHub Classroom para colaboração à distância entre estudantes e gestão dos projetos.

Palavras Chave

Ciências Físicas > Ciência de computadores

Tipo de avaliação

Avaliação distribuída com exame final

Componentes de Avaliação

Designação Peso (%)
Exame 60,00
Trabalho laboratorial 10,00
Trabalho prático ou de projeto 30,00
Total: 100,00

Componentes de Ocupação

Designação Tempo (Horas)
Elaboração de projeto 68,00
Estudo autónomo 50,00
Frequência das aulas 14,00
Trabalho laboratorial 28,00
Total: 160,00

Obtenção de frequência

Para obtenção de frequência o estudante deverá comparecer na apresentação nos dois momentos de avaliação do trabalho de projeto.

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

Classificação final = 10%*W + 15%*P1 + 15%*P2 + 60%*E 

onde:

W : Resolução dos exercícios semanais das aulas laboratoriais
P1 : Classificação da 1º fase do projeto laboratorial
P2 :  Classificação da 2º fase do projeto laboratorial
E : Classificação no exame

Para obter aprovação, o estudante deverá atingir classificação mínima de 40% na componente de exame.


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

A avaliação segue os mesmos parâmetros de inscrição ordinária. 
Para os trabalhadores-estudantes a obtenção de frequência requer apenas a apresentação das duas fase do trabalho de projeto.

Melhoria de classificação

Os estudantes inscritos em melhoria poderão realizar o exame e melhorar a classificação dessa componente, mantendo as classificações do projeto e exercícios de aulas laboratoriais que obteve na aprovação.
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-09-01 às 12:15:23 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias