General
(Picture source: Compilers course by Prof. Alex Aiken at online.stanford.edu)
C O M P I L E R S
Overview
Design and implementation of Compilers is one of the fundamental concepts in Computer Science. Compilers are also one of the most important tools for software development. This course is about how to design and implement compilers. Topics covered by the course include but not limited to an introduction to compilers and interpreters, regular languages, lexical analysis and scanners, context-free grammars, syntax analysis and different parsing methods, semantic analysis, symbol table management, error handling, intermediate representation and code generation, run-time memory organization, data flow analysis and code optimization, register allocation, and compiler writing tools. The course has weekly written and/or programming exercises including an implementation of a running compiler for a small (simplified) programming language.
Lecturer
Time and Location
Lectures: Thursdays 14:15 - 1600, Lecture Hall T1 (C202)
Exercises: Mondays 12:15 - 1400, TU6 (1199) in TUAS building
Office Hours: Thursdays and Mondays 16:15 - 18:00, Room A320, in CS building
Lecture Topics and Tentative Schedule (https://mycourses.aalto.fi/mod/resource/view.php?id=548865)
-
Introduction (9 Jan. 2020)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548870)
Exercise Session (13 Jan.) -
Lexical Analysis (16 Jan.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548871)
Exercise Session (20 Jan.) Introduction to Parsing (23 Jan.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548872)
Exercise Session (27 Jan.)Top-Down Parsing (30 Jan.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548873)
Exercise Session (03 Feb.)Bottom-Up Parsing (6 Feb.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548874)
Exercise Session (10 Feb.)Semantic Analysis & Symbol Table Management (13 Feb.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=548875)
Exercise Session (24 Feb.)Intermediate Code Generation (27 Feb.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=549853)
Exercise Session (02 Mar.)Run-Time Environment (5 Mar.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=554059)
Exercise Session (09 Mar.)Local Code Optimization (12 Mar.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=555990)
Exercise Session (16 Mar.)Global Optimization (19 Mar.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=559076)
Exercise Session (23 Mar.)Register Allocation (26 Mar.)
(https://mycourses.aalto.fi/mod/resource/view.php?id=561986)
(https://mycourses.aalto.fi/mod/resource/view.php?id=562347)
Exercise Session (30 Mar.)
Prerequisites
Main Reference (is not required, if you attend the lectures!)