Semantics and Functional Programming
HHU spring/summer semester 2024 edition
Figure 1: Fernsehturm, Berlin 1968 (Horst Sturm)
Last updated: ""
1. Course description
This course is intended primarily as a first introduction to functional programming, aimed at students with an existing background in logic and/or linguistics. The programming language we'll be using in this course is Haskell - a statically-typed, purely functional language. Although not as common as languages such as python, Haskell is a general-purpose programming language with industrial applications.
For our purposes, Haskell is especially compelling since its design is inspired by mathematical tools commonly deployed in linguistic theory, such as the lambda calculus, type theory, and category theory. The main topic of this course is "computational semantics", but from a symbolic/algorithmic, rather than a data-driven perspective. Over the course of the semester, we'll gradually build up a working knowledge of Haskell by implementing logical constructs used in linguistics, such as Context Free Grammars and Montagovian fragments as programs.
This will be an extremely hands-on course, and students should ideally expect to bring a laptop to class. We'll set up a Haskell development environment together, and homework exercises will involve concrete programming tasks.
2. Haskell resources
- Run haskell programs in your browser using the haskell playground.
- Setting up a haskell environment: Get Started
- The Haskell from first principles textbook.
3. Tentative Schedule
Class takes place Tuesday 16:30-18:00 in 2321.U1.72 (Z 34).
| date | class |
|---|---|
| April 9 | NO CLASS |
| April 16 | Lambda calculus |
| April 23 | Intro to Haskell |
| April 30 (remote) | Types and strings |
| May 7 | Types and typeclasses |
| May 14 | Fragments i: syntax |
| May 21 | Fragments ii: semantics |
| May 28 | Model checking |
| June 4 | Meaning composition |
| June 11 | Functors |
| June 18 | NO CLASS |
| June 25 | Applicatives |
| July 2 | Monads |
| July 9 | Student presentations |
| July 16 | Student presentations |