Team: James Hooper (JAH171230), Aru Gyani (AXG190108), Ivan Payne (IAP170000), Richard Gatchalian (RRG170002)
Feel free to try it out! Running study_helper.pl in s(CASP) should allow you to run predicates such as urgencyList(L)., studentGradeAvg(S,A)., hasDue(X,Y)., and more.
Note: input1.txt and input2.txt are both individual test cases for this project. Both are included to show some different types of output you can get.
Included files:
- README.md
- study_helper.pl - Script for generating assignment/schedule analysis and inferences
- parser.py - Script for generating header file
- input1.txt - Example test case 1
- input2.txt - Example test case 2
- mentor-sort.pl - Sorting and max_index functionality
- Choose an input file provided or edit a new one to have the student name, classes, grades, assignments, and days till due.
- Run the parser.py with an associated text file that has the proper input.
- Example: python parser.py input1.txt
- Run s(CASP) with the study_helper.pl file.
- Example: scasp -i study_helper.pl
Using Blackboard Learn, we all found one common issue. Blackboard offers a feature which displays the due date of any given assignment. While this alone is quite a useful feature to have, each class we take has its own set of assignments, quizzes, and exams we need to keep track of. So, we thought why not develop a tool to generate efficient study schedules for us based on all our assignments? Implementing common-sense reasoning and logical inferences into this tool resulted in a program that generates urgency ratings for each assignment based on due date, class grade, assignment type, etc. This allows a user to better conceptualize what assignments need to be done, and when.
Using the s(CASP) system was relatively new to us. Through this experience, we learned more about how to employ s(CASP) and take advantage of the tools it provides us.
Working in Prolog was a new experience for some of us. We learned better ways to implement syntax and how to employ Prolog in a useful manner.
The first step in building the project was figuring out a way to rank assignments for a schedule. To do this, we began with creating facts such as class and coursework to allow us to better handle our data. Next, we came up with factors that should contribute to the ranking system. From here, we built rules that factor time, grade, and assignment type into separate urgency calculations which then culminate in one final urgency rating for the assignment.
Coming up with a feasible concept to create was the first challenge we experienced. From there, working with lists and sublists was one of our biggest challenges through this whole process. Along with this, coming up with logical inferences for the program to make proved quite difficult.