COURSE PRESENTATION FORM - COMPILER - 2009/2010
COURSE NAME: Compiler
COURSE CODE: 70091
LECTURER: Alessandro Artale
TEACHING ASSISTANT:
TEACHING LANGUAGE: English
CREDIT POINTS: 4
LECTURE HOURS: 24
EXERCISE HOURS: 12
TIMESPAN: 22.02.2010 - 12.06.2010
TIMETABLE: see
Timetable Page
OFFICE HOURS LECTURER: During the lecture time span: Wednesday from 15:00 to 17:00; POS building, Piazza Domenicani 4, office 2.21
OFFICE HOURS TEACHING ASSISTANT:
PREREQUISITES
Formal Languages
OBJECTIVES
In this module students will develop a deeper understanding of Compilers technology. Students will learn the most important techniques for the representation and generation of Languages. Those techniques will be then applied to the construction of a compiler for a programming language. In particular, during this module the student will learn how to build the different parts of a Compiler: Lexical Analyzer, Parser and Code Generation.
SYLLABUS
- Introduction to the Notion of a Compiler.
- Grammars and Lexical Analyzers.
- Syntax Analysis and Parser construction
• Top-Down Parser
• Bottom-Up Parser
• LR Parser.
- Syntax-Directed Translation of Programming Language Constructs.
- Semantic Analysis: Type Checking.
- Principles of Code Generation.
TEACHING FORMAT
Frontal lectures and labs
ASSESSMENT
- Project: Compiler Development (30%)
- Final Written Exam (70%)
The project will count for all 3 regular exam sessions.
READING LIST
Textbook:
Compilers: Principles, Techniques, and Tools, Alfred V. Aho, Ravi Sethi and Jeff Ullman. Publisher: Prentice Hall, 2003.
Reading List:
Compiler Construction: Principles and Practice, Kenneth C. Louden. Publisher: Brooks Cole, 1997.
Advanced Compiler Design and Implementation, Steven Muchnick. Publisher: Morgan Kaufmann, 1997.
Programming Language Processors in Java: Compilers and Interpreters, David Watt and Deryck Brown. Publisher: Prentice Hall, 2000.
SOFTWARE USED
C, YACC, LEX
LEARNING OUTCOME
As a final result of this Module, Students will be able to understand the Techniques used to generate a machine executable code starting from a source program. Furthermore, Students will be able to build such compilers and, in general, they will be able to write translator programs, i.e, programs that map whatever piece of source code into a new target code.
COURSE PAGE
click here