Authors: Laura, James, Noah
What is the problem?
State the general problem. If applicable, tell us what information you will use, e.g., a link to some website that provides the information you used. What will you do?
It can be difficult to plan the courses one would like to take at UBC due to the confusing network of prerequisites and degree requirements in place. Adding realistic constraints like "I don't want to take language electives", "I want to graduate in 2018" or "I want to take CPSC 312 in the fourth year" makes the problem even harder to solve. That's why we need a Prolog computer program to do this for us.
Specifically, the user will provide their degree requirements, what courses they've taken so far, a list of courses they want to take with optional constraints like "in what year", and the program will return a plan of courses for them to take in order to graduate.
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.
We operate on actual data from UBC's course list, not just a set of made-up courses as a proof of concept. Also, We use prolog parsed the prerequisites from natural language to variables and atoms in the rule.
What did we learn from doing this?
Project link to GIt repository: https://github.com/nstbayless/cpsc-312-project-1/blob/master/project.pl
Conclusion: What do we learn? · We decided not to use natural language as part of the query because we believe that doing such is not really user-friendly e.g. (Can, I, take, this, course, if, I, have, taken...). Instead, we decided to use simple query can_regiester ((couse you choose),(course you taken) to return a simple true or false answer. We learn that Prolog can easily generate multiple results, such as our generate_schedule function could provide multiple schedules based on courses that are available.
What’s the bottom-line? Prerequisites of UBC computer science courses are complicated. We tried to accommodate different prerequisites conditions as many as possible, such as “one of”, “either(a) or (b)”, “all of”, etc.. However, we still find it difficult to accommodate every situation or natural language grammar usages, such as this prerep: One of MATH 152, MATH 221, MATH 223 and one of MATH 200, MATH 217, MATH 226, MATH 253, MATH 263 and one of STAT 200, STAT 203, STAT 241, STAT 251, MATH 302, STAT 302, MATH 318, BIOL 300; and either (a) CPSC 221 or (b) all of CPSC 260, EECE 320 and one of CPSC 210, EECE 210, EECE 309. Therefore, we believe Prolog is not quite suitable for it. We use prolog did the basic functions that we were planned to do. However, we were not able to give the gives the query result for concat multiple different constraints. It is a tough task to do in Prolog.