Lectures
The purpose of the lectures is to give a gentle introduction to the different topics, as well as to cover most of the algorithms and techniques needed to solve the assignments. The complete slides will be available directly after the lectures. We strongly recommend that you attend the lectures in person, but you can also follow the lectures using Zoom using this link: https://kth-se.zoom.us/j/65449365266. Note that the lectures will not be recorded.
Videos
We will continuously add new videos related to this course in the following playlists:
- OCaml Tutorial. Links to an external site. This playlist contains five videos where we introduce the basics of the OCaml language. All videos consist of live coding and cover the content presented during lectures 2 and 3.
- Scala Tutorial Links to an external site.. This playlist contains ten videos introducing the basics of the Scala language. All videos consist of live coding and cover the content presented during lectures 2 and 3. (Note that some of the Scala videos are shorter than the OCaml videos, leading to more videos in the Scala playlist. The covered material is about the same, however.) To motivate the use of Scala, see also the short slide deck on "Why use Scala in 2023?" Links to an external site..
- Compilers and Programming Languages Links to an external site.. This playlist contains various videos about compilers. Many of the videos zoom into some specific topics of the lectures.
- Compiler Engineering Links to an external site.. This playlist covers topics including how to use Scala-Bison to generate a bottom-up parser, and how to manually write a recursive descent parser in Scala.
- Low-level Programming Links to an external site.. This playlist focuses on low-level programming in assembly and C. The videos primarily relevant for this course are the x86-64 assembly videos.
Lectures
Lecture Number |
Date, Time, and Place |
Lecture Title |
Module |
Presenter(s) and Slides |
LE1 |
October 30, |
Course Introduction |
Module 0: Getting Started |
David and Philipp |
LE2 |
November 2, |
Introduction to Scala | Module 0: Getting Started |
Philipp |
LE3 |
November 2, |
Introduction to OCaml | Module 0: Getting Started |
David |
LE4 |
November 6, |
Lexical Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
Philipp |
LE5 |
November 6, |
Syntax Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
Philipp |
LE6 |
November 7, |
Semantic Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
Philipp |
LE7 |
November 20, |
Linkers, Loaders, and Assembly Programming | Module 2: Code Generation and Runtime Environments |
David |
LE8 |
November 20, |
Intermediate Representations and Instruction Selection | Module 2: Code Generation and Runtime Environments | David [slides Download slides] |
LE9 |
November 21, |
Garbage Collection | Module 2: Code Generation and Runtime Environments |
David
|
L10 |
November 23, |
Managed Runtime Environments | Module 2: Code Generation and Runtime Environments |
Philipp |
LE11 |
December 4, |
Liveness Analysis and Register Allocation |
Module 3: Program Analysis and Optimizations |
David |
LE12 |
December 5 |
Register Allocation cont. and Compiler Correctness |
Module 3: Program Analysis and Optimizations |
David and Philipp |
LE13 |
December 6, |
Alias analysis, Dominators, and Loop Optimization | Module 3: Program Analysis and Optimizations |
Philipp |
L14 |
December 7, |
Static Single Assignment (SSA) | Module 3: Program Analysis and Optimizations |
David |
LE15 |
December 15, |
Course Summary and Research Outlook |
David and Philipp |