Trabalho de Compiladores
Este documento descreve a proposta geral da disciplina FGA0003 – Compiladores 1 (Engenharia de Software, UnB/FCTE, 2026/2), detalhando a metodologia PBL adotada, a formação de equipes, os critérios de avaliação, os pontos de controle (P1/P2) e a entrevista final de entrega do projeto.
Objetivo da disciplina
A disciplina tem como objetivo capacitar os estudantes nos conceitos fundamentais da construção de compiladores, promovendo, por meio da metodologia Problem Based Learning (PBL), o desenvolvimento efetivo de um compilador ao longo do semestre. A proposta busca integrar teoria e prática, estimulando autonomia e colaboração no processo de aprendizagem, com foco nos níveis de Aplicação, Análise e Criação da Taxonomia de Bloom.
Metodologia (PBL)
A disciplina combina aulas expositivas com Problem Based Learning:
- Segundas-feiras — aulas teóricas, com fundamentação conceitual sobre autômatos, análise léxica, análise sintática, análise semântica, geração e otimização de código.
- Quartas-feiras — aulas práticas, orientadas a problemas, nas quais os grupos desenvolvem incrementalmente um compilador funcional.
Essa abordagem coloca o estudante em participação contínua em todas as etapas do projeto: planejamento, desenvolvimento, teste e apresentação do compilador.
Horário: segundas e quartas, das 14h às 15h50, nas salas S2/I9.
Formação de equipes
As equipes foram formadas por escolha livre dos próprios estudantes, com grupos de 5 a 6 integrantes cada. O cronograma da disciplina faz referência a equipes numeradas de 1 a 16, indicando esse total de grupos na turma.
Critérios de avaliação
A avaliação é contínua e baseada na seguinte fórmula de Nota Final (NF):
NF = (P1 + 2×P2 + 3×T + 4×C) / 10
Onde:
| Componente | Significa |
|---|---|
| P1 | Ponto de controle 1 — avalia a evolução do projeto em um primeiro momento do semestre |
| P2 | Ponto de controle 2 — avalia a evolução do projeto em um segundo momento do semestre |
| T | Nota da entrevista de entrega do projeto final, cobrindo aspectos técnicos, decisões de projeto e dificuldades superadas |
| C | Avaliação do compilador construído: correção, funcionalidades entregues, organização do código e documentação |
Critérios para aprovação:
- Frequência mínima de 75% nas aulas;
- Nota Final (NF) maior ou igual a 5,0.
A presença de todos os membros da equipe é obrigatória durante as apresentações/entrevistas de P1, P2 e T.
Entregas (P1 e P2)
Os pontos de controle avaliam a evolução do compilador em dois momentos do semestre, por meio de formulário preenchido pelo líder da equipe e uma apresentação (ou entrevista, com sorteio de membros) em sala.
P1
- Prazo do formulário: até 23/09/2026, 23h59
- Apresentação/entrevista em sala: 28/09/2026 (equipes 1 a 8) e 30/09/2026 (equipes 9 a 16)
- O não envio do formulário no prazo resulta em nota 0 (zero) para a equipe em P1.
P2
- Prazo do formulário: a partir de 04/11/2026, 23h59
- Apresentação/entrevista em sala: 09/11/2026 (equipes 16 a 9) e 11/11/2026 (equipes 8 a 1)
- O não envio do formulário no prazo resulta em nota 0 (zero) para a equipe em P2.
Em ambos os pontos de controle, caso a avaliação seja por entrevista, alguns membros da equipe são sorteados para representá-la no horário designado.
Entrevista final (T)
A entrevista de entrega do projeto final ocorre ao término do semestre, nos dias 30/11/2026 e 02/12/2026. Nela, a equipe apresenta:
- Os principais aspectos técnicos do compilador desenvolvido;
- As decisões de projeto tomadas ao longo do desenvolvimento;
- As dificuldades superadas durante a implementação.
O professor pode direcionar as perguntas a um grupo específico entre os membros presentes.
Cronograma resumido
| Mês | Marco |
|---|---|
| Agosto | Apresentação da disciplina, fundamentos de autômatos e análise léxica, início do projeto (fase léxica) |
| Setembro | Análise sintática, parser, AST e tabela de símbolos, P1 (28–30/09) |
| Outubro | Análise semântica, geração de código intermediário, otimização e geração de código final |
| Novembro | P2 (09–11/11), implementação final do compilador |
| Dezembro | Entrevistas finais (T) (30/11 e 02/12), semana de revisão de menção |
Consulte o plano de ensino completo para o cronograma detalhado, dia a dia, incluindo feriados e semana universitária.
Referências
Bibliografia básica:
- TREMBLAY, J. P.; SORENSON, P. G. Theory and Practice of Compiler Writing. BS Publications, 2008.
- WIRTH, N. Compiler Construction. Zurich, 2005.
- SINGH, R. Design and Implementation of Compiler. New Age International, 2009.
Bibliografia complementar:
- SUBRAMANIAN, K.G. Formal Models, Languages and Applications. WorldScientific, 2006.
- HERRERA HERNÁNDEZ, E.; CASA NOVAS HERRERO, N. Compilación II. Editorial Félix Varela, 2006.
- MARTIN-VIDE, C. Scientific Applications of Language Methods. Imperial College Press, 2010.
- KOWALTOWSKI, T. Implementação de Linguagens de Programação. Editora Guanabara, 1983.