Instructor: Adam Dingle
In this course we will study the logic programming and functional programming paradigms by learning the languages Prolog and Haskell. We will emphasize writing working code, and will use these languages to solve a variety of practical problems.
The lecture happens every Tuesday from 9:00 - 10:30 in room S11.
The accompanying tutorial happens every Tuesday from 12:20 - 13:50 in room S11.
To successfully complete this class, you must:
Complete a number of programming exercises through the semester, which I will assign weekly. You will need to earn at least 70% of the possible points for these exercises. Any points that you earn over 85% (up to a maximum of 15%) will be applied as bonus points to your exam score when you take the exam.
Write a program in Prolog or Haskell as a semester project. Here are some project ideas. Please send me a one-paragraph project proposal by Sunday, May 3rd. A first working version of your project is due by Sunday June 14th. The final version of your project is due by Sunday, June 21st.
Take an exam at the end of the semester.
My office hours this semester are every Friday from 10:30 – 12:00 in room 405. Feel free to stop by if you'd like to discuss any material from this class.
Ivan Bratko, Prolog Programming for Artificial Intelligence, Fourth Edition (Pearson, 2011)
Marcus Triska, The Power of Prolog (online, 2020)
Miran Lipovača, Learn You a Haskell for Great Good: A Beginner's Guide (No Starch Press, 2011; freely available online)
Allen and Moronuki, Haskell Programming from First Principles (Lorepub, 2020)
SWI-Prolog (reference manual: HTML / PDF)
This will evolve as the semester proceeds, but here is a rough plan for topics we will cover:
if
/then
/else
. let
.
Defining functions. Type declarations. Type variables. Type classes.
Pattern matching.