This unit introduces the main goals of the course and the idea of designing and implementing a programming language. Some major concepts are the distinction between syntax and semantics, the need for careful, clear specs free of underspecified behavior, and the role of intermediate languages in compiler design.
We will get an intro to the LLVM IR language and design and implement a new language that supports just basic string operations.
Classes
- Class 1.1: Programming Languages (Monday 18 August)
- Class 1.2: Language Specification (Wednesday 20 August)
- Class 1.3: LLVM intro (Monday 25 August)
- Class 1.4: Scanning "by hand" in Java (Wednesday 27 August)
- Class 1.5: LLVM IR and C code relationship (Wednesday 03 September)
Homeworks
Labs
- Lab 1.1: Specifications for language with Just Strings (due 23:59 on Tuesday 26 August)
- Lab 1.2: Interpreter for a Just Strings language (due 23:59 on Tuesday 02 September)
- Lab 1.3: Compiler for Just Strings language (due 23:59 on Tuesday 09 September)