/graduate-advisor

Graduate advisor project for UMSL CS5500 - Spring 2014

Primary LanguageJavaScriptMIT LicenseMIT

UMSL Graduate Advisor

Origins

This is a group project done as part of CS5500 (Software Engineering) during Spring 2014 at the University of Missouri Saint Louis (UMSL)

Our group consisted of: Ryan Chrisco, Peter Zylka, Shahrouz Yousefi, Tjaart van der Walt

The mandate was to write a system that can help you schedule your graduate studies.

Currently the system is deployed here: http://comp.umsl.edu/~Group1/graduate-advisor/ but we have no guarantee on how long it will remain available at this location.

At the end of the semester we decided to open source the code, and publish it under the MIT license.

Reusability

The system was not really built with reusability in mind. You will have to align your data strictly with our schema to make the system work for you. If you want to use the system and have specific requirements not covered by the current system, send a message (or better yet a pull request) and I will see what I can do for you.

There are 3 different source XML files:

Courses

A list of all courses.
http://comp.umsl.edu/~xml_data/Courses.xml

http://comp.umsl.edu/~xml_data/Courses.xsd

Rotation

A list of what courses gets presented in what semester over the medium to long term.
http://comp.umsl.edu/~xml_data/Rotation.xml

http://comp.umsl.edu/~xml_data/Rotation.xsd

Schedule

A detailed list of the courses for the next semester.
http://comp.umsl.edu/~xml_data/Schedule.xml

http://comp.umsl.edu/~xml_data/Schedule.xsd

Apart from these input files, we have a JSON rules file:

Rules

In this file you can specify certain rules

RuleDescription
corea list of courses that are always required
totaltotal number of courses in the degree
restrictionsundergraduate courses that has to be taken if a student is permitted on restricted status

We alo have more specific rules like how many courses must be taken at each level, but these could be omitted.

The JSON can be found here http://comp.umsl.edu/~Group1/graduate-advisor/json/rules.json

Our approach

Our approach is to map out the schedule for your entire degree using the available data. You simply have to input

  • some configuration details
  • courses you have waivers for
  • courses you have completed
  • courses you would like to take

    You do not need to specify all courses you want to take, the system will fill any unselected courses so that the degree requirements will be fulfilled.

Getting help

If its slow its working

The backend normally returns almost instantaneously, for difficult cases however it can take some time to complete. On our test systems it normally returned within a minute. If it cannot find a valid schedule it will display an error message to that effect.

Check your configuration

During our testing, we often found found our configuration to be the thing that tripped us up. If you can’t get a solution try relaxing some restrictions.

Built in help

If you don’t understand the user interface we have a context sensitive help page that explain the usage for the currently selected tab. Simply click on the button marked with a ? in the top corner.

Browser compatibility

Why our application is not compatible with Internet Explorer

  • The default browser in the computer lab is Firefox.
  • We wanted to use some advanced HTML5 functionality.
  • We had limited resources and time.
  • Internet Explorer has become irrelevant.

Tested browsers

BrowserVersionsStatus
Firefox27, 29fully tested and supported
Chrome34supported (not comprehesively tested)
Internet ExplorerallUNSUPPORTED

Technical details

We have implemented almost everything in Javascript. The only exception is that the XML data files are parsed with a 5-line php script and embedded as JSON directly into the html page. The advantage of this approach is that we can provide a cached version of the XML data should the original XML page be down for any reason. If we rewrote this code in javascript we would have a completely client side solution, requiring only that the XML data files be available in some predefined location.

We use the following Javascript frameworks

  • JQuery
  • Bootstrap
  • Trip.js

Our backend implements a depth first search algorithm with backtracking.

Known bugs

  • If you Select a 6000 level course and you add other courses after that the “bucket fill lines” grow thicker.
  • If you select a 6000 without its prerequisite, run the scheduler, and go back to the selected tab the 6000 level course will be be highlighted as if it was scheduled with a prerequisite.
  • After loading data from the JSON file, not all configuration options are correctly displayed.

Incomplete features

  • Edit your schedule after it has been created by the application, and then recreate with the new criteria. Possible options will be to: Anchor a course in its current position, move a course to another semester, or remove a course from the schedule.