Course:CPSC312-2017-Course-Planner

From UBC Wiki

What is the problem? In universities, more senior level courses generally have a series of pre-requisites. Students have to complete the pre-requisite courses before they can take the more senior level courses. For example, in order to take CPSC 312, students have to complete one of CPSC210, EECE 210, EECE 309, or CPEN 221. When students do their course planning, they have to determine what are the senior level courses they are interested in taking and figure out the pre-requisite courses and plan their schedule term by term accordingly. If their interests change at any point of their academic career, they will have to go through the entire process again to re-plan their course schedule. We are looking to build a tool to simplify the course planning process. We will build a database that contains a small subset of UBC courses and their pre-requisites. Students will be able to provide a list of courses they have taken to the system (could be an empty list) and a list of course they are interested in taking, they system will be able to propose a term by term course schedule that maximize the number of interested courses the student wants to take. State the general problem. If applicable, tell us what information you will use, e.g., a link to some web site that provides the information you used. What will you do?

What is the something extra? We will be using a tree structure to store the courses with nodes close to the root to be the senior level courses and nodes close to the leaves to be the junior level courses that are pre-requisites of the senior level courses. We will be using a list of list with each element in the list representing the courses to take on each semester. The interesting/challenging part is to figure out the courses and the order that will maximize the coverage of the interested courses the particular student wants to take. 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.

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