Compilers
Keywords |
Classification |
Keyword |
OFICIAL |
Computer Science |
Instance: 2021/2022 - 1S
Cycles of Study/Courses
Teaching language
Portuguese
Objectives
Study and implementation of principles of construction of compiler and interpreters for conventional programming languages.
Learning outcomes and competences
At the end of this course students should be able to:
1) Understand the decomposition of a compiler in phases: lexical analysis, syntactical analysis, semantic analysis, intermediate code generation and machine code generation
2) Understand the concept of concrete and abstract syntax and intermediate language representations
3) Implement a compiler for a small imperative programming language following the phases of point 1)
Working method
B-learning
Pre-requirements (prior knowledge) and co-requirements (common knowledge)
Basic knowlege of imperative and functional programming.
Basic knowlege of assembly language (e.g. MIPS).
Model of computation (regular expressions and finite automata).
Program
Introduction to programming language execution principles. Compilers vs interpreters. Lexical analysis. Scanner generators. Syntactic analysis (LL,LR, LALR parsers). Parser generators. Syntax oriented compilation. Attribute grammars. Semantic analysis: symbol table, type checking. Activation records. Three address code translation. Code generation: flow analysis, register allocation.
Mandatory literature
Torben Mogensen; Basics of Compiler Design, 2010
Appel Andrew W. 1960-;
Modern compiler implementation in ML. ISBN: 978-0-521-60764-3 pbk
Complementary Bibliography
Andrew W. Appel;
Modern compiler implementation in C. ISBN: 0-521-58390-X
Louden Kenneth C.;
Compiler construction. ISBN: 978-0-534-93972-4 hbk
Teaching methods and learning activities
Lectures using video-conferencing for exposure of concepts suported by slides projections and interactive demonstration.
Practical classes in laboratories for solving proposed worksheets and monitoring the practical projects:
Practical project for teams of 2 students: construction of a compiler for a simplified imperative language.
GitHub Classroom will be used for colaboration betwen students and for managing practical projects.
keywords
Physical sciences > Computer science
Evaluation Type
Distributed evaluation with final exam
Assessment Components
designation |
Weight (%) |
Exame |
60,00 |
Trabalho laboratorial |
10,00 |
Trabalho prático ou de projeto |
30,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
designation |
Time (hours) |
Elaboração de projeto |
68,00 |
Estudo autónomo |
50,00 |
Frequência das aulas |
14,00 |
Trabalho laboratorial |
28,00 |
Total: |
160,00 |
Eligibility for exams
To be eligible for exam the student should submit at least 2/3rds of the weekly exercise worksheets and present two assement moments for the practical project.
Calculation formula of final grade
Final mark = 10%*W + 15*P1 + 15%*P2 + 60%*E
where
W : Submssion of weekly exercise sheets
P1: Mark for the 1st project milestone
P2: Mark for the 2nd project mileston
E : Mark obtained in exam
To obtain aproval the student must achive a minimum of 40% mark on the exam.
Special assessment (TE, DA, ...)
The assement parameters are the same as for ordinary students.
Eligibility for exam of worker students requires only the presentation of the two assement phases of the practical project.
Classification improvement
Students may attend the exam and improve their grade in that assement parameter, but maintain the grade of the project component and practical exercises of their first aproval.