Instructor: Adam Dingle
In this course we will study logic programming and functional programming by learning the languages Prolog and Haskell. We will emphasize writing working code, and will use these languages to solve a variety of problems.
The lecture happens every Monday from 10:40 – 12:10 in room S4.
There are two tutorial sessions:
every Wednesday from 10:40 – 12:10 in room S11 (teacher: Adam Dingle)
every Wednesday from 15:40 – 17:10 in room SU2 (teacher: Vít Šefl)
Adam Dingle holds office hours every Friday from 13:00 - 14:00 at his office (room 405).
To successfully complete this class, you must:
Complete a number of programming exercises through the semester, which your tutorial teacher will assign weekly. You will need to earn at least 70% of the possible points for these exercises.
Write a program in Prolog or Haskell as a semester project. Here are some project ideas. Please send your tutorial teacher a one-paragraph project proposal by Sunday, May 3th. A first working version of your project is due by Sunday, June 7th. The final version of your project is due by Sunday, June 14th.
Take an exam at the end of the semester.
Regularly attend the lectures and tutorials.
You may not use GPT, Copilot or other AI tools to generate any code or documentation that you submit in any homework assignment or semester project in this course. Any use of such tools is considered cheating and may disqualify you from passing the class.
Ivan Bratko, Prolog Programming for Artificial Intelligence, Fourth Edition (Pearson, 2012)
Marcus Triska, The Power of Prolog (online, 2025)
Miran Lipovača, Learn You a Haskell for Great Good: A Beginner's Guide (No Starch Press, 2011)
Richard Bird, Thinking Functionally with Haskell (Cambridge University Press, 2014)
SWI-Prolog (reference manual: HTML / PDF)
This will evolve as the semester proceeds, but here is a rough plan for topics we will cover.