
Interpretation and Compilation
Code
11160
Academic unit
Faculdade de Ciências e Tecnologia
Department
Departamento de Informática
Credits
6.0
Teacher in charge
Luís Manuel Marques da Costa Caires
Weekly hours
4
Total hours
136
Teaching language
Português
Objectives
This course aims at teaching solid knowledge and concepts in the design and implementation of programming languages. This goal is reached by the systematic study of the syntax, semantics and pragmatics of programming languages.
Knowledge
1.To know the architecture and techniques used in the design and implementation of interpreters, compilers and type systems
2.To know the essential components of the design of programming languages and corresponding semantics
3.To define programming languages by composition of base elements
Skills
4.To define algorithms of the abstract representation of programs
5.To describe language semantics by interpreting, compiler and verification algorithms
6.To design and implement compiler procedures targeting concrete virtual machines
Soft-Skills
7.To reason about complex systems at different levels of abstraction
8.To design general purpose designs based on first principles
Prerequisites
Gosto pela construção de software, criatividade e bom aproveitamento em UCs como AED, LAP.
Subject matter
A.Principles
1.Programming Language Syntax
2.Programming Language Semantics
3.Interpretation levels, Principles of Language Processing and Compilation.
B.Program interpretation and Compilation
1.Expressions and values; Definitions and environments
2.State and references; memory-environment model
3.Functional abstraction; first-class and higher order functions
4.Recursive definitions
5.Structured values: records and recursive values
6.Objects and Classes: Objects represented with records and closures
C.Type Systems
1.Principles, goals and limitations of static analysis methods
2.Simple type systems: functional types
3.Verification and inference algorithms
D.Compilers and Runtime support systems
1.Compiler architecture
2.Runtime support systems
3.Syntax driven code transformation
4.Code generation to intermediate languages (CLR, Java Virtual Machine)
Bibliography
- “Concepts in Programming Languages”, John C. Mitchell, Cambridge University Press. ISBN 0 521 78098 5
- “Essentials of Programming Languages”, Daniel Friedman, Mitchell Wand, Christopher Haynes, MIT Press.
- “Modern Compiler Implementation in Java” Andrew W. Appel, Cambridge University Press
- “The Study of Programming Languages”, Ryan Stansifer, Prentice Hall International Edition.
Evaluation method
The evaluation comprises two mini tests, worth 30% in the final grade. The first test focuses on basic aspects of programming language interpretation, the second is focused on type systems and compilation. The remainder of the final grade is obtained by developing a medium-sized project targeting a pragmatic programming language.
The project covers the construction of an interpreter and compiler for a programming language, which can be used to construct practical software.
The mini tests take place in the lab classes. The first one is scheduled for the week of October 13th.