Code |
14460
|
Year |
1
|
Semester |
S1
|
ECTS Credits |
6
|
Workload |
PL(30H)/T(30H)
|
Scientific area |
Informatics
|
Entry requirements |
N/A
|
Learning outcomes |
The students should be able to conceptually understand and put in practice the following concepts:
Compilers front-end, Lexical Analysis, (Ascendant and Descendent) Syntactical Analysis, Operational Semantics, Denotational Semantics, Type Checking and (polymorphic) Type Systems, Activation Records, Translation to Intermediate Code, Basic Blocks and Traces, Instruction Selection, Liveness analysis, Register allocation, Garbage collection, Object-oriented languages, Functional Programming Languages, Loop Optimizations, Code Optimizations, Static Single-Assignment Form, Dataflow Analysis, Control Flow Analysis, Pointer Analysis and Other Static Program Analysis. Monotone Framework, Unification Framework, Cubic Framework.
|
Syllabus |
Aula 1 - Assembly x86-64 Aula 2 - Abstract syntax, formal semantics and interpreters Aula 3 - Types Aula 4 - Lexical analysis Aula 5 - Descendent Syntactical Analysis Aula 6 - Ascendant Syntactical Analysis Aula 7 - Compiling imperative languages Aula 8 - Compiling functional languages Aula 9 - Compiling object oriented languages Aula 10 - memory allocation Aula 11 - code optimization Aula 12 - Orders, lattices and the monotone framework Aula 13 - Dataflow analysis Aula 14 - Path Sensitivity, interprocedural analysis and control flow analysis Aula 15 - Pointer analysis
|
Main Bibliography |
Andrew A. Appel. Modern Compiler Implementation in ML. A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd edition, Addison Wesley, 2006. ISBN 0-321-48681-1. Benjamin C. Pierce. Types and Programming Languages. Flemming Nielson, Hanne R. Nielson, and Chris L. Hankin. Principles of Program Analysis. Hanne. R. Nielson and Flemming Nielson. Semantics with Applications - an appetizer. Anders Møller and Michael I. Schwartzbach. Static Program Analysis. Randal E. Bryant et David R. O’Hallaron. Computer Systems: A Programmer’s Perspective.
|
Teaching Methodologies and Assessment Criteria |
The contents of this curricular unit are exposed in theoretical classes (expositive and interactive methods), and its practical aspect is explored in practical laboratory classes. Each type of class has two weekly contact hours. Practical classes are governed by laboratory guides that students run on laboratory computers. The proposed individual and group works are designed so that students develop the technical skills described in the objectives by designing and implementing labs. The theoretical and practical components are evaluated using three main elements: - Labs 60% - 12 Values; - Project 40% - 8 Values.
|
Language |
Portuguese. Tutorial support is available in English.
|