-
Notifications
You must be signed in to change notification settings - Fork 0
Requirements
Problem Description:
Course planning at the University of Waterloo can be problematic due to factors such as limited resources, poor coordination between faculties, and a lack of any easy-to-use software. There’s no platform on which they can both plan courses for the upcoming term and for their degree overall. The overall process of a student planning their courses for an upcoming term involves a lot of trial and error in terms of selecting a set of 4-6 courses that can actually fit in one schedule. There is no software that aids with this trial and error (students have to manually look up course times and determine if their desired schedule works). Adding a course into Quest is a tedious and a time consuming process, so although it does detect time conflicts in your proposed schedule it’s not very efficient for students.
Users: The specific group of users that would be interested in your project:
The use case for this application is geared towards students at the University of Waterloo.
User Persona:
Personal Info: Student at the University of Waterloo.
Demographic Info: 18-25 years of age. Enrolled in an academically challenging program.
Goals & Motivations: Overachieving, organized student who enjoys taking classes with his friends at the University of Waterloo.
**User Story: **
Aryaman Wang Shah (Nickname: AWS) is a third-year student at the University of Waterloo studying Computing and Financial Management. As a third year, AWS has a lot of flexibility in course selection for the upcoming Winter 2024 term. Being an overachiever, he wants to take six courses in the upcoming semester. AWS has completed his course selection and has received his class schedule a couple weeks before the term starts.
However, he notices a time conflict between two of his selected courses; CS251 and CS370. AWS has two to three other classes on his wish list of courses so he can switch one of the conflicting courses out with something else. However, another reason for the issue occurring may be because the CS251 tutorial overlaps with the CS370 lecture. If AWS switches to another CS251 tutorial section, it will allow him to take CS370. But perhaps AWS’ desired tutorial time is full, and he must wait until enrolment capacity is not at maximum.
There are various options for AWS to choose from and he is completely overwhelmed. He’s frantically scribbling different versions of a potential schedule in his notebook to find a schedule that works for him. He eventually finds a schedule that works, but after double checking the class and tutorial times, he realizes he miswrote the times of one of his classes and a conflict arises again. AWS is furious and wishes there was an easier way for him to solve this problem.
Our App’s Solution – User Resolution:
The course planning app allows the user to select the classes they wish to take in the upcoming term and display them in a calendar view. The app will detect time conflicts immediately upon selection of the course and mention the source of the conflict. The user will be allowed to save multiple variations of their schedule, providing various combinations of courses for the upcoming term. If there is a full lecture or tutorial section that the user wants to switch into the user can add that section to their wishlist. Moreover, a user can try to optimize their course schedule by providing a list of courses they want to take.
Functional Requirements
The following are major functionalities of our application:
| Functionality | Issues |
| 1. User sign-in and authentication. Application includes registration and login page for users to make accounts and sign-in, allowing them to store and save their selected schedules/wishlist to their accounts. | |
| 2. Browse and filter all available classes at the University of Waterloo for the upcoming academic term. A course’s info page includes the course description, prerequisites, and available schedules for the current term. Users can filter subjects with the course level in the Explore page. | |
| 3. Add/remove available classes to/from the user's course schedule. Courses can be added from the course search page or from the calendar/list view of a schedule directly. | |
| 4. Add/remove courses to/from a wishlist that saves courses a student may wish to take in the current term and any upcoming term in their degree (i.e. 3A, 3B …). They can also populate the wishlist with courses they have already taken to be able to view their entire undergraduate experience. Users can directly add to their wishlist from the course info page or from a sidebar. |
|
| 5. Display current selected courses in a calendar view and uses can move between different weeks. | |
| 6. Allow the user to create and view alternative schedules using different classes or lecture/tutorial times. Users can drag and drop courses onto their alternate calendar. | |
| 7. Detect time conflicts between courses in the student’s main calendar for the current term. A course that conflicts with an existing course in the user’s schedule cannot be added. | |
| 8. Allow users to add friends and view their calendars through the app. A user can both send and accept friend requests within the app. If a friend request is accepted the user can view their friend’s schedule and compare it to their own. | |
| 9. Optimize user's course schedules based on their selected courses through a Spring Boot OptaPlanner engine. Hard constraints include no overlap in courses. Medium constraints include minimizing working days on which courses occur. Soft constraints include minimizing gaps between courses on the same day. | |
| 10. All pages in the application can be navigated via a sidebar. The user can also logout from the app via the “Logout” button on the sidebar. Home page also shortcuts to different pages. | |
| 11. User preferences are saved to the user’s local file system. Mainly, the app’s screen size and the selected theme for the calendar are saved when a user quits the application and are restored when reopened. | |
| 12. Application includes hotkeys and top menu options for shortcuts including quitting the app, navigating to the course search page and creating a new alternate schedule. Texts in the application can be copied and pasted through a menu and hot keys. | |
| 12. All users and their assets are saved to a Postgres database through API routes. | |
| 13. Servers are deployed to the cloud and can also be built with Docker. |