Software Atelier V: Languages and Compilers
Professor: Nate Nystrom
Assistant: Andrea Mattavelli
Assistant: Francesco Alberti
Course type: Laboratory and Lecture
Value in ECTS: 6
Bibliographic references available on the University Library website
Academic year 2012/2013 - Third year - Fall semester
Prerequisites: Software Atélier IV, Computer Architecture, Algorithms and Data Structures, Automata and Formal Languages
Bachelor´s course also available to master´s students ("Compilers").
Objectives
In this course you will learn how programs written in high-level languages are executed on modern hardware. Understanding how languages are implemented is useful for reasoning about program behavior and performance.
A secondary goal of the course is to expose students to the principles, techniques, and tools used to construct compilers and interpreters.
Contents
The course will cover both the theory and practice of programming language implementation. Topics include compiler structure, lexical and syntactic analysis (parsing), types, semantic analysis, program representations, data-flow
analysis, register allocation, optimization, and compiler construction tools. Students will implement a compiler for a high-level programming language on modern hardware.
Teaching mode
The course is heavily project-based. Students will implement a compiler for a high-level programming language on modern hardware. Students will also do written assignments to understand programming language and compiler principles Students are expected to read the assigned readings before class. During class sessions we will discuss remaining questions and problems.
References
Compilers: Principles, Techniques, and Tools, 2nd edition by Aho, Lam, Sethi, and Ullman, 2006
Modern Compiler Implementation in Java, 2nd edition, Andrew W. Appel and Jens Palsberg, 2002