Code |
15632
|
Year |
1
|
Semester |
S1
|
ECTS Credits |
6
|
Workload |
PL(30H)/T(30H)
|
Scientific area |
Informatics
|
Entry requirements |
N/A
|
Learning outcomes |
• Understand the contribution of compilers to the reliability of software systems; • Understand the different aspects of programming languages through their compilation; • Understand the mechanisms underlying compilation: the translation from one language to another, its optimization and the functionality of the different phases; • Understand the relationship among high-level language, intermediate representation, analysis and optimization; • Understand the process of generating code for modern computer architectures, including virtual machines; • Implement a compiler for a realistic programming language or extend an existing one; • Select modern tools to implement parts of compilers and interpret their functionality; and • Communicate the results obtained clearly and precisely, using a technical report.
|
Syllabus |
A. RISC-V Assembly programming B. Abstract syntax, semantics and interpreters C. Lexical and syntactic analysis D. Typing E. Evaluation strategies and parameter passing F. Compilers for functional and object-oriented languages G. Compiler optimization H. Memory allocation
|
Main Bibliography |
Alfred V. Aho, Monica S. Lam, Ravi Sethi et Jeffrey D. Ullman. Modern Compilers: Principles, Techniques, and Tools. Benjamin C. Pierce. Types and Programming Languages. Randal E. Bryant et David R. O'Hallaron. Computer Systems: A Programmer's Perspective.
|
Language |
Portuguese. Tutorial support is available in English.
|