Course:CPSC312-2017-Course-Prerequisites

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 CPSC 210, 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 in 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 courses they are interested in taking, the system will be able to propose a term by term course schedule that maximizes the number of interesting courses the student wants to take.

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 interesting courses the particular student wants to take.

What did we learn from doing this?

(This should be written after you have done the work.)