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 9:00 – 10:30 in room S4.
There are two tutorial sessions:
every Wednesday from 10:40 – 12:10 in room S11 (teacher: Adam Dingle)
every Wednesday from 12:10 – 13:40 in room SW1 (teacher: Tomáš Bílý)
Adam Dingle will hold office hours every Friday from 13:00 - 14:00 in room S10.
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. Any points that you earn over 90% (up to a maximum of 10%) will be applied as bonus points to your exam score.
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 5th. A first working version of your project is due by Sunday, June 9th. The final version of your project is due by Sunday, June 16th.
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 code 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, 2024)
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.