Objectivos de Aprendizagem:
• Compreender a contribuição dos compiladores para a fiabilidade dos sistemas de software;
• Compreender os diferentes aspectos das linguagens de programação através da sua compilação;
• Compreender os mecanismos subjacentes à compilação: a tradução de uma linguagem para outra, a sua otimização e a funcionalidade das diferentes fases;
• Compreender a relação entre linguagem de alto nível, representação intermédia, análises e optimizações;
• Compreender o processo de geração de código para arquitecturas de computadores modernas, incluindo máquinas virtuais;
• Implementar um compilador para uma linguagem de programação realista ou extender uma já existente;
• Selecionar ferramentas modernas para implementar partes de compiladores e interpretar a sua funcionalidade; e
• Comunicar os resultados obtidos de forma clara e precisa, utilizando um relatório técnico.