Title Functional Programming for Logicians
Lecturer Péter Mekis
Codes BMA-LOTD-329.02
Time Monday 18:00-19:30
Venue i221
Prerequisites The course assumes familiarity with the basic concepts and methods of standard first-order logic. No programming experience is assumed.
Description

In this course we will introduce and explore Haskell, a purely functional language that has its roots in the lambda calculus. Haskell differs considerably from the mainstream paradigm of imperative languages (like C or Python), so the course might be interesting to students who already have experience in programming.

The course will take a project-oriented approach. For most of the time we will build code together, and introduce new tools and methods when needed for the projects we are working on.

The course will cover the following topics:

  1. Defining and calling functions in Haskell
  2. Elementary examples of recursion
  3. Advanced examples of recursion
  4. Higher-order functions
  5. Data types and type classes
  6. Functors, applicatives, and monads
  7. Implementing fundamental mathematical structures
  8. Implementing propositional logic
  9. Implementing first-order logic
  10. Implementing modal logic
  11. Implementing category theory
  12. The functional paradigm and the lambda calculus

Students will work on their own laptops, please bring yours! (We can provide one or two computers, so don't worry if you don't have one.) Before the first session, please install the the following software on your device:

All of these are available for all major platforms.

The course has a GitHub repository. Homeworks can be submitted there.

Requirements Students will write and submit their own codes on a weekly basis.
Literature
Session 7
Session 6
Session 5
Session 4
Session 3
Session 2
Session 1