This course is an introduction to functional programming and the structure of programming languages. We do not assume you have programmed before. You will learn about concrete and abstract syntax as well as static and dynamic semantics. You will see grammars and inference rules on the theoretical side, and program lexers, parsers, type checkers, interpreters, machines, and compilers on the practical side. This will involve recursive data structures like lists and trees. You will also learn about specifications and correctness proofs using induction. Finally, we will study the asymptotic time complexity of functions like insertion sort and merge sort.
We will use the programming language OCaml. You will learn about recursive functions and equational specifications in the first week, and you will have seen polymorphic higher-order functions by the third week.
This year is the first year the course is taught in English using OCaml. Don't worry, there will be tutorials and office hours in German, and you can always ask in German. The course builds on a book we have been using for more than 20 years at Saarland University. An english online version of the book is in work and will be available online during the course.
Lectures are Tuesday (14.15 - 15.45) and Thursday (10.15 – 11.45) during the lecture period (October 18, 2021 – February 11, 2022). There is a Christmas break (December 20, 2021 – January 2, 2022). We plan to provide videos of the lectures. There are weekly tests and two exams (December and February). There is also a re-exam in March. We offer office hours and tutorials during the lecture period.
You have to register with us for the course to get full access to the materials and the forum. All announcements concerning the course will be on the forum. Registration (online) opens the week before lectures start.