Educational Objectives: Experience implementing graph models and algorithms using generic library tools; experience solving problems using graphs
Operational Objectives: Produce a directed graph structure that models a curriculum. Produce specific algorithms finding paths in the model. Produce a specfic application to student scheduling.
Deliverables:
Each team uses the template library indicated in the team listings
Each team member is responsible for one of the three components
The end result should be an application that uses the information in input files and produces a listing of all shortest schedules resulting in completion of degree requirements.
Input files:
Course Prerequisit List. Consists of course numbers compressed to a string (i.e., no spaces) arranged in the "target: dependency_list" syntax used in makefiles. That is, each line of the file consists of one course followed by a colon followed by its immediate prerequisites. Every course will be listed as a target, even if it has no prerequisits. Sample lines of this file:
MAD2104 MAD2105: MAD2104 COP3330: COP3408 COP4530: COP3330 CDA3101 MAD2104 COP3502 COP4531: COP4530 MAD3105 MAC2411 MAC2412: MAC2411 MAC2413: MAC2412
Course offering schedule. A semseterly listing of the courses that will be offered for a few years into the future. The syntax used would be the same target: dependency_list illustrated as follows:
Su05: COP3408 Fa05: COP3330 COP3502 COP4020 CENxxxx Sp06: COP4530 COP3101 CDA3101 COT4020
Degree requirements. A listing of courses required for the degree, by course number as used above
Student credit list. A listing of courses for which the student has credit
Constraints. Possible restrictions such as the maximum number of courses a particular student can take in a single semester. (Default value = 5 courses.)
Graph algorithms should be preferred to brute force solutions.
Output is in the form of a text file with alll shortest schedules printed in a readable format.