January 2022, coordinated project in the Master of Logic at ILLC, University of Amsterdam. Instructor: Malvin Gattinger.

Given Covid-19, this project will be fully online at least until 14 January. Later meetings might be hybrid. We will have lectures (L) and exercise (E) sessions.

Day | Whe[n/re] | What | Topics | ||
---|---|---|---|---|---|

We 12 | 09:00-11:00 zoom | L1 .lhs |
Functions, Lists, Types, Propositional Logic | ||

We 12 | 13:00-15:00 gather | E1 | .pdf .lhs .hs | ||

Th 13 | 09:00-11:00 zoom | L2 .lhs |
Type classes, QuickCheck, Modal Logic | ||

Th 13 | 13:00-15:00 gather | E2 | .pdf .lhs .hs | ||

Fr 14 | 09:00-11:00 zoom | L3 .lhs |
Folds, Functors, Monads | ||

Mo 17 | 09:00-11:00 zoom | L4 .lhs |
IO, Trees, Randomness, Projects | ||

Mo 17 | 13:00-15:00 gather | E3 | .pdf .lhs .hs | ||

We 19 | 09:00-11:00 SP D1.116 | L5 .lhs |
(Symbolic) Model Checking (Dynamic) Epistemic Logic(s) | ||

We 19 | 13:00-15:00 SP D1.116 | E4 | .pdf .lhs .hs | ||

Fr 21 | 09:00-11:00 SP A1.04 | L6 .lhs |
Beyond Haskell (Put lectures.cabal and stack.yaml in the same folder, then run "stack ghci L6.lhs".) | ||

Fr 28 | 10:00-13:00 SP G2.02 | Your Presentations (see email for schedule) | |||

Fr 4 | 23:59 | Report Deadline |

You can also find the rooms here on DataNose. Note that DataNose might be wrong about which sessions are fully-online and which ones are hybrid!

During the remaining time after the lectures and exercise sessions you will work on your project in pairs (or groups of three). In week three you will give presentations.

- Miran Lipovača: Learn You a Haskell for Great Good! (currently offline, click here for a mirror)
- Interactive version of
*Learn You a Haskell*: https://github.com/jamesdbrock/learn-you-a-haskell-notebook - Bryan O'Sullivan, Don Stewart, and John Goerzen: Real World Haskell
- Kees Doets & Jan van Eijck: The Haskell Road to Logic, Maths and Programming

- Ian: Good Haskell Style
- Stephen Diehl: What I Wish I Knew When Learning Haskell
- Brent Yorgey et al.: Typeclassopedia

Functional Programming is a paradigm that focuses on functions instead of objects and states. Functional programs consist of definitions instead of instructions: We tell the compiler *what* we want to compute and *not how* to compute it.

Haskell is a lazy, strongly typed and purely functional programming language used in academia and industry. Based on lambda calculus and borrowing ideas from category theory, Haskell is an excellent tool for the mathematically inclined programmer. From a logician's point of view, the algebraic data types in Haskell make it very suitable to work with formal languages.

Depending on the background of the participants, this project will start with a fast introduction to Haskell and then focus on how it can be used as a research tool. We will focus on implementations of explicit and symbolic model checking for modal logics, but other topics from the whole Master of Logic spectrum are welcome.

At the end of this project you will understand the basics of Haskell: types, type classes, functors and monads; be able to implement model checking and other logic algorithms in Haskell; know how to use QuickCheck to test your code and to refute conjectures; have used Haskell to investigate a research question; be able to write well-documented programs.

Basic knowledge of modal logic and set theory is expected. Courses on lambda calculus or category theory are a plus, but not necessary.

No programming experience is expected. On the contrary: If you have programmed in imperative languages before, be prepared to unlearn a few things.

You should bring a laptop to the exercise classes. A UNIX operating system (GNU/Linux or MacOS) is preferred. You should use an editor which works with the Haskell Language Server, for example VS Code or emacs. For your project you should also use git and the Haskell tool stack.

Sign-up is closed.