From UBC Wiki

UBC Room Scheduler

Authors: Simon, Jingru, Yun

What is the problem?

State the general problem. If applicable, tell us what information you will use, e.g., a link to some web site that provides the information you used. What will you do?

We are aiming to create a service similar to UBC room booking system. The user can look/search for available rooms by date and by different parameters like capacity of the room and the availability of equipment (e.g. whiteboard/monitor/projector).

What is the something extra?

What is the in-depth aspect you will do? If the problem is related to some other group's project, tell us how they fit together. If in doubt, include the information.

The user can search for room to schedule by their preference or purposes. For example: "Where can I book a room with projector to study on November 20 from 10 to 11?" We can also give the next best solution according to the user's preference if the best solution is not available.

What did we learn from doing this?

(This should be written after you have done the work.) What is the bottom-line? Is logic programming suitable for (part-of) the task? Make sure you include the evidence for your claims.

We learned that logic based programming is suitable for the search tasks being completed in our program. Prolog allows us to input constants and variables, giving us the desired result. A scheduler requires a huge amount of data for all the available resources. In Prolog this data is difficult to manage since it must be represented in a knowledge base as constants. Lists are very helpful and make easier for comparing and filtering out the desired/not desired constants (information), which is why for most part of our program we use lists for search. Originally, we did not take advantage of lists, but eventually due to difficulty in comparing the constants and extracting the information we needed, we started to use them. Therefore, in the end we implemented most of our program using lists. In general, we were able to successfully perform various search tasks such as finding all the rooms available for booking on a particular date and time, as well as finding rooms based off the equipment the user provided. There are numerous times when we were stuck understanding the logic of the program (especially while writing list), and a simple ordering change of the variables or reference would make all the errors disappear. We found that Prolog is not suitable for making any actual reservations to store new data, since it requires updating the state of the system.

Link for project