Useful informations

If you want to discuss the projects you can reach us via:

Here you can find issues relevant to our projects.

Projects

Project 1: Simply Logical – online book

Mentors: Kacper Sokol, Peter Flach
Priority: High
Technologies: JavaScript, HTML, CSS, Prolog, Python
Difficulty: Medium
Code location: GitHub
Issue tracker: GitHub
Discussion board: mailing list

Description

The goal of this project is to improve the existing codebase of the online edition of the well-established “Simply Logical” textbook – a free educational resource about Artificial Intelligence and Logic Programming with Prolog (read more). The book mixes text with example Prolog code which makes it particularly suitable for conversion to an online, notebook-like study resource.

The book was originally written in an early version of Microsoft Word, which was later converted into HTML. We cleaned the code (from MS Word HTML tags) as much as possible with purpose-built Python scripts based on the BeautifulSoup4 package. Nevertheless, there are still plenty of legacy, redundant HTML tags and CSS styles, therefore the codebase requires cleaning and reformatting.

For example, noninteractive code blocks do not have syntax highlighting, and are indented with &nbsp;s – see here. One approach would be to use Jekyll’s code blocks and syntax highlighting. Another example are repetitive <p> tags with a variety of class parameters like: sektie, sektie1 and WordSection2 without any visible effect – see here. Cleaning this up with another BeautifulSoup4 Python program should be fairly easy, but first we need to decide on the website’s style. Any thoughts?

Right now, it is based on Twitter’s Bootstrap. So there are probably many features that we do not currently use but could help to improve the aesthetics and functionality of the website, e.g. search feature or hyperlinked content index. The overall goal is for the book’s website to have a more appealing, modern and fresh look and feel. Therefore, you can unleash your creativity to design and develop new style sheets for the online book, looking great on all platforms – phones, tablets and PCs – alike.

The list of improvements given here is not exhaustive and if you see something simple that could be fixed please open a GitHub issue and if you feel like fixing it submit a PR. If you write a script to parse and cleanup our HTML, please publish it as a GitHub Gist and link it in your issue/PR.


To make the book interactive we are embedding pre HTML tags containing Prolog code so that they can be rendered with this JavaScript using SWISH notebooks. SWISH notebooks are similar to Jupyter Notebooks but specifically for Prolog. They are developed by the SWI-Prolog community that is behind one of the most functional, stable and widely used Prolog platforms available.

Right now the Prolog code is directly embedded into the book’s HTML, for example here. We would like to explore how the book’s text can be separated from the Prolog code. One way could be to use Jekyll’s include file.pl syntax – see here as an example – so that Prolog programs can be reused. Additionally, if we keep Prolog programs in a separate repository we can use them in multiple projects by importing the repository as a submodule. (This will also benefit our Project 2.)

Alternatively, our JavaScript can be improved to take a link to a Prolog file rather than embed the Prolog code directly in the HTML. To be more precise, right now we are passing the whole program to be executed as a string in the URL request. Instead, we would like to explore a syntax like this: https://swish.swi-prolog.org/?code=https://github.com/SWI-Prolog/swipl-devel/raw/master/demo/likes.pl&q=likes(sam,Food)., where only the Prolog program location is passed in the URL. To this end, code block inheritance has to be solved: right now we are able to concatenate Prolog code from multiple code blocks (inherit) into a new one. Whether we can do the same when using the latter approach is an open question that we will answer over the summer. (You can read more about SWISH API on SWISH’s help page under Preload SWISH with data section.)

There is much more we can do. We will be excited to hear from you!

Project 2: Simply Logical Too (2.0) – a series of lectures

Mentors: Peter Flach, Kacper Sokol
Priority: Medium
Technologies: JavaScript, HTML, CSS, Prolog, Python
Difficulty: Medium
Code location: GitHub
Issue tracker: GitHub
Discussion board: mailing list

Description

While working on this project you will build a series of self-contained, interactive – with embedded Prolog programs – AI lectures. You will utilise SWISH environment and reveal.js library.

It is recommended to read the Project 1 description beforehand to better understand the context of this project.

In comparison to Project 1 this task puts more emphasis on your creativity. You will be supervised by Peter Flach, the author of “Simply Logical: Intelligent Reasoning by Example”, who will guide you to design and build a series of interactive AI and Logic Programming lectures. The lectures will be self-contained and will cover one topic each. They will be used for both self-study and teaching, and should not take more than 1 hour to study/teach. You can see a pilot deck of slides that we are developing here.

To get you started, together we will select 20 or so topics that you will use to build the series of lectures. You will design and implement HTML templates together with style sheets that will be based on reveal.js slide shows with embedded SWISH code blocks. The slide decks will be build with Jekyll and hosted on GitHub Pages.

Aside from the web development, you will also design and implement a collection of Prolog programs, which will serve as hands on exercises for each presented topic. To this end, you need to:

You will also develop supplementary materials in SWISH notebooks, not embedded directly in the lecture slides.

This project will reuse parts of Simply Logical online book. Since cleaning up and refactoring the book’s codebase is part of Project 1 you might need to collaborate on extracting Prolog programs from the codebase. (This will help you develop your team skills.) In case there is nobody involved in that project you might need to do it on your own. You are welcome to discuss with us any suggestions regarding technologies that will be used to finalise this project. Maybe there is something awesome that will do the job just right and we don’t know about it!

Project 3: Logic Programming exercises

Mentors: Kacper Sokol, Peter Flach
Priority: Low
Technologies: Prolog, JavaScript, HTML, CSS
Difficulty: Medium-high
Code location: Scattered
Issue tracker: GitHub, GitHub
Discussion board: mailing list

Description

This project gives you freedom to build a collection of platforms that will allow students to utilise their knowledge of Prolog and Artificial Intelligence concepts to solve logic puzzles.

It is recommended to read the Project 1 description beforehand to better understand the context of this project.

Since there are no issues associated with this project, instead of submitting a PR you are free to discover AI puzzles and propose their Prolog solutions that can be implemented as a teaching aid. We would like these exercises to run directly in the web browser, if possible, using the technologies mentioned above; for example SWISH extensions: rendering data, embedding Graphviz graphs, plots, sudoku, chess, among others. However, if you are aware of software platforms that are better suited for the task, feel free to discuss them with us before you start the work.

Over the years we have accumulated a wealth of teaching material, which includes: web-based reasoning i.e. logical inference about knowledge obtained from online sources including Wikipedia and Google Scholar, an online multiplayer grid world to experiment with search strategies, and a testing and grading environment for Prolog-based assignments, among others. Most of these are not entirely finished projects that need finishing touches. These are all experimental projects that we want to incorporate into Simply Logical educational resources once they mature.

If you develop a new Prolog programming exercise, implementing an accompanying auto-marker would be a big plus – students won’t need a teacher to evaluate correctness of their solution. You may want to have a look at the following resources as an inspiration: