The project assignment can be found here.
Please inform before (by email) that you plan to attend office hours.
| Instructor | Schedule | |
|---|---|---|
| Mário Pereira | Wednesday, 14h00 (Office 243) | mjp.pereira@fct.unl.pt |
The OCaml language is our tool of choice for the most part of the ICL course. We are going to use OCaml during lectures, to present fundamental concepts about languages and compilers, as well as in practical sessions to implement and experiment with some of the main concepts presented during lectures.
In order to install OCaml and the language ecosystem, please follow the installation guide provided here.
During the ICL course I will also provide Java implementations of the majority of the exercises, as well as the project skeleton. However, I strongly recommend, and believe me it is of your best interest, to use OCaml as a vehicle to learn about compilers design. OCaml (and overall functional programming languages) is a perfect choice to design and implement compilers. Java, on the other hand, it is not a good choice to do so.
| Week | Date | Topics | Slides | Labs |
|---|---|---|---|---|
| 1 | 11 Mar | Introduction to the ICL course and the OCaml language | Lecture 1 | |
| 1 | 11 Mar | Exercises using the OCaml language | Lab 1 | |
| 2 | 18 Mar | Abstract syntax, semantics, and interpreters | Lecture 2 | |
| 2 | 18 Mar | Pen-and-paper exercises on semantics | Lab 2 Bonus, in OCaml Bonus, in Java |
|
| 3 | 25 Mar | Lexical analysis | Lecture 3 | |
| 3 | 25 Mar | Mini-python interpreter | Lab 3, in OCaml Lab 3, in Java |
|
| 4 | 1 Apr | Parsing, part 1: top-down analyzers | Lecture 4 | |
| 4 | 1 Apr | Pen-and-paper exercises on context-free grammars and LL(1) parser | Lab 4 | |
| 5 | 8 Apr | Parsing, part 2: bottom-up analyzers | Lecture 5 | |
| 5 | 8 Apr | Syntactic Analysis of Mini-turtle | Lab 5, in OCaml Lab 5, in Java |
|
| 6 | 15 Apr | Static Typing | Lecture 6 | |
| 6 | 15 Apr | Mini-C Type Checker & Exercises | Lab 6, exercises Lab 6, in OCaml Lab 6, in Java |
|
| 7 | 22 Apr | X86-64 Assembly | Lecture 7 | |
| 7 | 22 Apr | Exercises on X86-64 Assembly | Lab 7 | |
| 8 | 29 Apr | Evaluation Strategies and Parameter Passing | Lecture 8 | |
| 8 | 29 Apr | Help with the project | ||
| 9 | 6 May | Compilation of Object-Oriented Languages | Lecture 9 | |
| 9 | 6 May | Help with the project | ||
| 10 | 13 May | Compilation of Functional Languages | Lecture 10 | |
| 10 | 13 May | Help with the project | ||
| 11 | 20 May | Optimizing compiler, part 1 | Lecture 11 | |
| 11 | 20 May | Help with the project | Lab 11, support slides | |
| 12 | 27 May | Optimizing compiler, part 2 | Lecture 12 | |
| 12 | 27 May | Help with the project | Lab 12, support slides |