Course:CPSC312-2023-CPSC-Course-Recommender

From UBC Wiki


Authors: Andrew Huang, Keira Moore, Philly Tan

What is the problem?

CPSC students may be struggling to find which CPSC courses they are eligible to take. Our program can take in a list of courses the student has taken, and return a list of courses that they meet all the prerequisites for. It is possible to do this on SSC - but it can be very tedious/annoying clicking through every CPSC course to find the ones you are eligible for. Our program also makes it easy for students to find information about their courses - such as if it is required for the CPSC major.

What is the something extra?

We added functionality to make it easy for students to access the SSC to register for the courses returned by our program. We also made the program more user-friendly by providing a list of English questions they can ask; rather than having to write a query such as `courses_with_level(2, Course, Name, SSCURL) :- course(Course, Level, _, Name, SSCURL).`, the user can tell the program "List all year 2 courses" and obtain the same response.

What did we learn from doing this?

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

  1. Building data structures in a scalable way with Prolog
  2. Learned how to use Prolog to build apps that analyze language
  3. Used Prolog to analyze the courses based on a tree

Functional programming is suitable for the task as it is very easy to check rules, this makes it perfect for a course requirement checking program. However, dealing with exceptions to rules proved to be a bit difficult. We also saw that Prolog is also good for dealing with invalid inputs - if somebody enters a course that does not exist, the program simply returns false.

Links to code etc.

https://github.com/phillytan/cpsc312-project-2