This project objective is realizing the design, development and implementation of a web application which works as a university planner. The objective was that the system could be installed specifically in the user university and run through the web browser as a local page or having the possibility of installing it in a university server (could be in any site, no need to be in the user university) so through the browser and an internet connection it could be used from anywhere (mainly in developing countries which is the target of the project). The project was initially thought for the Ngozi university in Burundi, so it tries to fulfill the requirements from that university, but the design is as open as it could be so it can be adapted to work on other universities.
All the languages and software used are open-source based so there is no problem with further development of the project, also for the same reason the language used in all the code is English. The interface is developed with Java Netbeans and the help of JSP and JSF (further explanation on the interface section), and the logic part is implemented in Ciao Prolog.
The interface is accessed through a web browser and we have tried to design it as simple as possible, due to the fact that the potential users of the application may not have much knowledge about this kind of software, it uses the Java EE platform. Ciao Prolog is used for the application logic, it is developed by the CLIP group of the Facultad de Informática at Universidad Politécnica de Madrid, so is the CiaoJava library which connects the java code from the interface with the Prolog facts and predicates.
The prolog part is the logic view of the application, it has a data base of facts which formalizes the dataset that represents the university (classrooms, teachers, subjects…) and uses several predicates with restrictions that check every possible collision that can appear when scheduling the calendar. The database is also defined in prolog so the code must have the functionality to add, delete, set and get the different fields from the database. Knowing that prolog is not a database oriented language, it has powerful tools for the solutions searching and having a relatively small dataset it can be used with success for both managing the database and finding solutions.
In this manual there are explained both the interface java code and the prolog core code, apart from having a description of the database design and its tables and attributes, its length may appear excessive but it has been done the way almost everything in the code is explained here so it is not necessary to read it the full length at once since a developer can always check the specific thing he wants just by looking for the description in this manual.
Note that at least some level of knowledge of both java and prolog is supposed, this way, the guide doesn´t have an unreadable extension, we know its length may discourage some developers from repairing, adapting or adding some utility but keep in mind that there is an explanation for every prolog predicate, every element from the database and every module from the interface so it may be easier for a developer to go directly to the target and avoid reading the full length.