Ryan Loh - Project Portfolio Page
Overview
NUSDegs streamlines computing degree planning by offering personalized module schedules, tracking progress, and ensuring on-time graduation. It eliminates guesswork, reduces stress, and saves time for students. It’s a comprehensive tool for efficient and successful degree completion.
Summary of Contributions
Features Implemented
1. Module Prerequisite Feature
What it does:
Allows the user to see the prerequisites the module has.Justification:
This feature allows the user to plan their schedule more efficiently, eliminating guesswork. This Function is also used as a helper function for feature 2.Highlights:
This feature was challenging as format of the prerequisites returned from NUSMODS API was unintuitive, and it required an in depth understanding of recursive functions due to its nested prerequisites. Furthermore, good understanding of the REST API convention in order to retrieve prerequisites based on module from the NUSMODS API.
2. Schedule Recommending Feature
What it does:
Allows the user to generate a course based recommended schedule that is sorted based on prerequisites.Justification:
This allows the user to have a schedule based on their degree, which saves time for the user having to look through all the prerequisites of each module.Highlights:
This feature was challenging as it required in depth data structure and algorithms knowledge. The feature utilised the topological sort algorithm, hashmaps, adjacency lists and queues.
3. Pace Feature
What it does:
Allows the user to see the average pace required for graduationJustification:
Provides crucial information for users to plan their academic journey effectively. Enables students to track and manage their progress towards graduation. Assists in avoiding potential delays in completing the degree by offering insights into the necessary pace.Highlights:
Challenging as it required careful validation of the inputs as well as taking into account various other components such as the schedule and student class.
Enhancements Implemented
1. Optimised runtime on certain functions
Problem at hand:
Adding a recommended schedule to a schedule and deleting a module from a planner both took significantly long (150 seconds and 20 seconds respectively) due to the checking of prerequisites which required API calls to NUS MODS.Justification:
- Initially, the GitHub actions consumed a total of 18 minutes. However, they were subsequently optimized, resulting in a reduction to just 3 minutes.
- Moreover, each execution of the functions previously required nearly 2 minutes to complete.
- This optimization not only enhanced the productivity of my colleagues by eliminating the need to wait for 20 minutes for their GitHub actions to run but also significantly improved the overall user experience.
Highlights:
In depth understanding of time complexities as well as the responses NUSMODs provided was required in order to make the optimisations. Detailed explanation regarding the optimisations I did
2. Implemented overall architecture to adopt MVC design pattern
Justification
: Improved abstraction, separation of concerns and made it easier for my teammates to work on features independentlyHighlights
: Required an in-depth understanding of design patterns. The implementation was challenging as well as I had to constantly communicate with my teammates where respective functions had to be placed.
Code Contributions:
Contribution to UG:
- Added table of contents
- Added header links to Table of contents
- Restructure commands to have a natural progressive flow
- GitHub Theme to enhance look
Contributions to team-based tasks
- Maintain issue tracker and milestones
- Initiated team to do feature based integration tests
- Add JavaDoc to most methods
- Suggested and maintained external notion board
Reviews/mentoring contributions:
- PRs reviewed (#152, #154, Provided pseudocode to help teammate understand my suggestion in this PR #166 , #185)
Contributions beyond the project team:
- Reported 8 bugs for PED, helped other teams debug their jar and spot potential issues
Contributions to DG:
Architecture diagram:
Ui class diagram:
Pace feature sequence diagram:
Recommend feature sequence diagrams:
Recommended a schedule based on the user’s major:
Add a Recommended schedule to the user’s schedule: