A05: Student advisor
This assignment helps you practice designing and using an expert system. Your task is to write rules for the Drools rules engine for a student advisor expert system. A student advisor system would guide students on class selection based on their major (and corresponding major requirements), the classes they have already taken and their grade, and their interests. For this assignment, we’ll restrict our focus to CSCI majors, the system will only need to suggest classes for the next semester, and we’ll ignore non-major classes and general education requirements.
These templates include all the Drools libraries (JAR files), plus example Java code and a DRL rules file.
Every fact has a type, i.e., a class. (You can create types in your DRL file using
declare MyType, but these cannot be referenced in your main Java code.) Ultimately, you’ll probably want at least these types:
Coursetype: course name, course number, unit count; note, prerequisites can be complex so they’re better represented as rules
Semestertype: semester name, year
CourseOfferingtype: a course is offered in a particular semester
CourseAttempttype: student attempted a course in a particular semester and earned a particular grade
Preferencetype: some student has some preference, e.g., preference for security or AI or networks
- Course prerequisites; these can be complex, e.g., prereqs for CSCI 211: “CSCI 141 and either MATH 141Q or MATH 130 or MATH 125Q”
- Major requirements; include minimum GPA requirements
- Preferences (some preferences might be inferred, some might be obtained directly from user input)
- Choices for next semester; depends on student preferences and what they have already taken
Refer to the Stetson Catalog for the requirements for a CSCI degree.
Your advising system should ask the user for some basic facts (which courses they’ve taken, what grades they earned, etc.); it should make some inferences about preferences; and it should give a selection of courses the student should take in the next semester based on this information.
Submit all your source code and DRL files.
Out of 5 points:
- 5 pts: The goal (stated above) is met, and you have at least 20 rules and at least three distinct preferences (e.g., security, AI, and graphics).
- 4 pts: The goal is met but you have fewer than 20 rules and/or fewer than three distinct preferences.
- 3 pts: The goal is not fully met but you have at least 10 rules and the program runs properly.
- 2 pts: The goal is not fully met and you have fewer than 10 rules, but the program runs properly.
- 1 pt: The goal is not fully met and the program accomplishes little, but has no syntax errors or runtime errors.
- 0 pts: The program has syntax or runtime errors (crashes), or no submission.