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 (Zoom meetings and Slack workspace links at the end of this page)
Lecture Sessions: Wednesdays 14:15 - 1600
Exercise Sessions: Mondays 14:15 - 1600
Zoom Office hours: Fridays 14:15 - 16:00
Lecture Topics and Tentative Schedule
Introduction (27 May)
(https://mycourses.aalto.fi/mod/resource/view.php?id=574758)
Exercise Session (01 June)Lexical Analysis (03 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581417)
Exercise Session (08 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=583271)Introduction to Parsing (10 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581419)
Exercise Session (15 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=584087)Top-Down Parsing (17 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581449)
Exercise Session (22 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=584833)Semantic Analysis & Symbol Table Management (24 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581451)
Exercise Session (29 June)
(https://mycourses.aalto.fi/mod/resource/view.php?id=585937)Intermediate Code Generation (01 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581453)
Exercise Session (06 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=586821)Bottom-Up Parsing (08 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581454)
Exercise Session (13 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=593034)Run-Time Environment (15 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581455)
Exercise Session (20 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=594937)Code Optimization (22 July)
Part 1: Local Optimization
(https://mycourses.aalto.fi/mod/resource/view.php?id=581457)
Part 2: Global Optimization
(https://mycourses.aalto.fi/mod/resource/view.php?id=581458)
Exercise Session (27 July)
Part1:(https://mycourses.aalto.fi/mod/resource/view.php?id=595378)
Part2:(https://mycourses.aalto.fi/mod/resource/view.php?id=595380)- Register Allocation (29 July)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581459)
(https://mycourses.aalto.fi/mod/resource/view.php?id=581461)
Exercise Session (03 August)
(https://mycourses.aalto.fi/mod/resource/view.php?id=597652)
Course Evaluation
Assignments Tentative Schedule (https://mycourses.aalto.fi/mod/resource/view.php?id=581412)
A Note Regarding the Final Grade (https://mycourses.aalto.fi/mod/resource/view.php?id=596221)
Prerequisites
Main Reference (is not required, if you attend the lectures!)