CS Siesta Fiesta

What is the problem?

As a fifth year student, my graduation date is approaching quickly. Instead of going to academic advisors, I figured it would be smarter to assess my graduation requirements through a prolog knowledge base with a natural language interface. We intend to construct a knowledge base of UBC courses, with pre-reqs, faculties, etc. as well as knowledge about a particular student’s transcript. Queries can be made on this knowledge base to find graduation requirements

To keep the problem contained, we will limit ourselves to CS requirements with limited consideration of outside requirements

What is the something extra?

We will add natural language processing to the knowledge base so a user can query for things like “Can I graduate?” and “Have I finished first year” and “Have I finished math requirements”.

What did we learn from doing this?

We discovered that prolog is the perfect platform for deducing which graduation requirements have been met. We had to build a knowledge base big enough to satisfy a variety of queries, and we also had to figure out how to parse courses from a transcript (list of course codes). One of the challenges we had to overcome was how to 'prioritize' courses that could fill out more than one requirement. For example cpsc312 satisfies a third year computer science course, but can also satisfy an elective requirement. Additionally, we managed to implement a basic natural language interface to query specific requirements, or graduation as a whole.