Go to:
Logótipo
You are here: Start > EIC0028

Compilers

Code: EIC0028     Acronym: COMP

Keywords
Classification Keyword
OFICIAL Programming

Instance: 2011/2012 - 2S Ícone do Moodle

Active? Yes
Web Page: https://moodle.fe.up.pt/1112/course/view.php?id=2860
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MIEIC 145 Syllabus since 2009/2010 3 - 6 56 162

Teaching language

Suitable for English-speaking students

Objectives

1- BACKGROUND
The Compilers course focuses on the scientific knowledge and techniques necessary to implement processors for artificial languages, namely the imperative and the object-oriented programming languages. This course follows the Theory of Computation course which allows the students to acquire knowledge about regular languages, context-free languages and grammars, and the use of automata to implement language processors.
The Compilers course demands that students use a diversity of data structures (trees, graphs, symbol tables, etc.), a variety of algorithms (e.g., to color a graph), and gives to students the opportunity to deal with testsuites and to experience with a fairly complex software project.

2- SPECIFIC AIMS
Provide concepts which allow:
(1) to understand the languages’ compilation phases, specially imperative and object-oriented (OO) languages;
(2) to specify the syntax and semantics of a programming language;
(3) to understand and use the data structures and the main algorithms used to implement compilers.

3- PREVIOUS KNOWLEDGE
Imperative programming languages, object-oriented programming languages.
Data structures and algorithms.
Theory of Computation.

4- PERCENTAGE DISTRIBUTION
Scientific Component: 70%, Technology Component: 30%

5- LEARNING OUTCOMES
The skill and learning outcomes will allow students to:
(1) develop and implement in software language processing systems of artificial languages and information textually specified under certain lexical and grammar rules;
(2) design and implement in software the various compiler stages, namely:
- regular expressions and finite automata;
- syntactic and semantic analyzers;
- semantic analyzers;
- code optimization;
- code generators having processors or virtual machines as target;


Program

- Introduction. Compilation phases and typical structure of a compiler.
- Lexical analysis. Regular expressions and finite automaton.
- Syntax analysis. Grammars. Syntax analysis’ algorithms. Error handling.
- Semantic analysis. Type checking.
- Execution environments. Memory organization and schemes for parameter passing.
- High and Low-level intermediate representations. Intermediate code generation techniques.
- Code optimizations and final code generation techniques.

Mandatory literature

A. Aho, M. Lam, R. Sethi, J. Ullman; Compilers: Principles, Techniques, and Tools, 2nd Edition, Addison Wesley, 2007. ISBN: 0321486811
Appel, Andrew Wilson; Modern Compiler Implementation in Java, Cambridge University Press, 2002. ISBN: ISBN 0-521-82060-X
Alfred V. Aho... [et al.]; Compilers. ISBN: 0-321-49169-6

Complementary Bibliography

Cooper, Keith D.; Engineering a compiler. ISBN: 1-55860-699-8
Terence Parr; The Definitive ANTLR Reference - Building Domain Specific Languages, The Pragmatic Bookshelf, 2007. ISBN: 978-09787392-4-9
Louden, Kenneth C.; Compiler construction. ISBN: 0-534-93972-4
Muchnick, Steven; Advanced Compiler Design and Implementation, Morgan Kaufman Publishers, 1997. ISBN: ISBN 1-55860-320-4

Teaching methods and learning activities

Lectures: presentations, complemented by examples, demonstrations and clues for the lab work.

Labs: discussions and problem solving related to the practical work.


Software

COINS, http://www.coins-project.org/international/
JavaCC, https://javacc.dev.java.net/
JASMIN, http://jasmin.sourceforge.net/.
ANTLR - Another Tool for Language Recognition
NetBeans 6

keywords

Technological sciences > Technology > Computer technology > Software technology

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Description Type Time (hours) Weight (%) End date
Attendance (estimated) Participação presencial 55,00
Work related to Project Defesa pública de dissertação, de relatório de projeto ou estágio, ou de tese 45,00
Exams Exame 3,00
Study for the exams Exame 12,00
Total: - 0,00

Amount of time allocated to each course unit

Description Type Time (hours) End date
Weekly Studdy Estudo autónomo 50
Total: 50,00

Eligibility for exams

Finalizing the lab assignment with a minimum grade of 10 (out of 20).

Calculation formula of final grade

FIRST ROUND (“Época Normal):
Final Grade = ROUND(0,70*AD + 0,15*T1 + 0,15*T2)
- AD: grade obtained in the distributed evaluation (lab assignment) [0..20]
- T1: grade obtained in the first exam [0..20]
- T2: grade obtained in the second exam [0..20]
Each student will pass in the course in the “época normal” if he/she attained the conditions for admission to exams, obtained a minimum average grade of exams (T1 and T2) of 8 (out of 20), and a obtained Final Grade greater or equal than 10.

SECOND ROUND (“Época de recurso):
Final Grade = ROUND(0,70*AD + 0,30*EX)
- AD: grade obtained in the distributed evaluation (lab assignment) [0..20]
- EX: grade obtained in the exam [0..20]
Each student will pass in the course in the “época normal” if he/she attained the conditions for admission to exams, obtained a minimum average grade of exam (EX) of 8 (out of 20), and obtained a Final Grade greater or equal than 10.

Special assessment (TE, DA, ...)

The practical lab assignment is mandatory. Due to its duration and complexity it must be completed within the lective semester.

- Finalizing the lab assignment with a minimum grade of 10 (out of 20).

FIRST ROUND:
- Midterm Exams: T1 and T2.

SECOND ROUND:
- Exam (EX).

The final grade (mark) is obtained as presented in section: "Final Mark".

Classification improvement

The classification of the distributed component (AD) cannot be improved in the present academic year and it is used in the two rounds ("normal" and "recurso").

The grade obtained in the component related to the two midterm exams (T1 and T2) can be improved with the final exam (EX) or in the next occorrence of the UC.

The grade obtained in the component related to the final exam (EX) can be improved in the next occurrence of the UC.

Observations

Practical Lab assignment:
- Development of the lexical, syntactical and semantic analysis’ phases and of the compiler’s code generation for a simple imperative language.
- This assignment should be done in groups of 2 students at the maximum.

Exams are open book.

The students that have passed in the course in the previous academic year (2008/2009) can avoid a new distributed component (AD) classification. In this case, the AD grade obtained in 2008/2009 will be used in the equations to calculate the final grade in the course.
Recommend this page Top
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2024-10-02 at 16:32:59 | Acceptable Use Policy | Data Protection Policy | Complaint Portal