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 28, |
Course Introduction |
Module 0: Getting Started |
David and Philipp |
LE2 |
October 29, |
Introduction to Scala | Module 0: Getting Started |
Philipp |
LE3 |
October 29, |
Introduction to OCaml | Module 0: Getting Started |
David |
LE4 |
November 4, |
Lexical Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
Philipp |
LE5 |
November 4, |
Syntax Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
David |
LE6 |
November 5, |
Semantic Analysis | Module 1: Lexical Analysis, Syntax Analysis, and Semantic Analysis |
Philipp |
LE7 |
November 18, |
Linkers, Loaders, and Assembly Programming | Module 2: Code Generation and Runtime Environments |
David |
LE8 |
November 18, |
Intermediate Representations and Instruction Selection | Module 2: Code Generation and Runtime Environments | David [slides Download slides] |
LE9 |
November 19, |
Garbage Collection | Module 2: Code Generation and Runtime Environments |
David
|
L10 |
November 21, |
Managed Runtime Environments | Module 2: Code Generation and Runtime Environments |
Philipp |
LE11 |
December 2 |
Liveness Analysis and Register Allocation |
Module 3: Program Analysis and Optimizations |
David |
LE12 |
December 3 |
Register Allocation cont. and Compiler Correctness |
Module 3: Program Analysis and Optimizations |
David and Philipp Keynote at PLDI 2024 by Magnus Myreen Links to an external site. on "Much Still to Do in Compiler Verification (A Perspective from the CakeML Project)" |
LE13 |
December 4, |
Alias analysis, Dominators, and Loop Optimization | Module 3: Program Analysis and Optimizations |
Philipp |
L14 |
December 5, |
Static Single Assignment (SSA) | Module 3: Program Analysis and Optimizations |
Philipp |
LE15 |
December 13, |
Course Summary and Research Outlook |
David and Philipp |