Available courses

Introduction to SWI-Prolog

Lots of people are discovering Prolog, an emerging language with a long history.

This class will start June 8 and run through August 3.

The 8 weeks of material will be in two sections.

The first 4 weeks will cover the basics of the language. It takes a bit longer to cover the basics of Prolog because we have to teach the logic paradigm as well as the 'usual' things one would learn in a language class.

The second 4 weeks will cover the web framework, clp(fd), broadcast, continuations, and other subjects depending on interest and time.

You can expect to emerge from the first 4 weeks of this course with basic fluency in the language. You can expect to emerge from the next 4 weeks ready to program SWI-Prolog in a professional environment. It's fine to just take the first half if that fits your needs better. However, as an emerging language, the second half is a rare opportunity to learn this material.

Prerequisites:  You should be comfortable operating a computer, be able to find things in a file system, etc. To capture all the information presented in the course you should have a basic fluency with programming in the unix environment on a really basic level (like understanding the notion of a current directory).

You should understand some basic programming concepts like exceptions, opening a file, etc. My expectation is that for most students this will not be their first language (if it is, you've made an excellent choice of first language to learn. You'll need to reach out if we introduce something out of the blue. ).

Keeping the language accessible to all sorts of folks is important to us. If you need us to do something different to help you learn, let us know. The course is a volunteer project of a tiny group of people, so we may not always get it right.




Probabilistic Logic Programming extends the domain of logic programming to cover not just things that are logically true always, but to probability distributions on things.

The course facilitator, Dr. Fabrizio Riguzzi, is a world expert in probabilistic logic programming and author of the cplint system for probabilistic logic programming in SWI-Prolog.

Prerequisites:  Fluency with SWI-Prolog (Intro to SWI-Prolog course or equivalent)


Logic programming has been widely used as a formal method for problem solving and knowledge representation. Nevertheless, traditional logic languages do not incorporate techniques to deal with approximated reasoning. Fuzzy logic programming is devoted to introduce fuzzy logic concepts into logic programming in order to explicitly deal with vagueness and uncertainty in a natural way.