Authors: Hary Chow, Joseph Lachowicz
What is the problem?
We aim to create a interface that parses data from UBC's website and, when given a course, it will generate a "prereq tree" consisting all prerequisite courses. (For example, when given the input "CPSC 312", it will generate "CPSC210, CPSC110". In addition, the user can also list the courses that he had taken, which will have 2 uses: 1) filter out the prerequisite courses required in generating prereq trees, and 2) allow the program to recommend courses that the user have meet all the prereqs for.
What is the something extra?
In order to make our program update timely, we will implement HTML parsing into it, allowing it to directly grab data from UBC Academic Calendar's course list (http://www.calendar.ubc.ca/vancouver/courses.cfm?page=code).
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.
We learnt how to make use of Prolog's pattern matching capabilities to easily parse data from HTML.
We also gained experience in using Prolog as a Datalog syntax. As the prerequisites of courses at UBC often involve a number of combinations and cases, we realized how logic programming is especially helpful in making the our program understand and evaluate nested sub-cases and combinations of sets of elements.