Overview
GradTrak is an application that was morphed from the codebase of Address Book - Level 4. It was conceptualised and designed in mind to assist students of NUS to track their graduation progress and plan future modules that they want to take.
Summary of contributions
-
Major feature: added the ability for students to manage CAP and workload limits for each semester
-
What it does: allows the student to check if the current module plan for all semesters within the preferred limits in difficulty and time required The student can set their preferences and check against the modules they plan to take.
-
Why this feature: This is critical for students to ensure that they can manage their workload and maintain their targeted CAP for graduation. It is easier for students to detect if any semester will be too challenging or too easy for them. This may suggest reallocating some modules to distribute the difficulty more evenly across all semesters.
-
Highlights: This feature depends on many attributes that originally does not exist in the system and can only be implemented after implementing the other smaller features. Before being able to check their plan against their preferences, the student must first be able to set their preferences, as well as estimate their workload and grades for each planned module.
-
-
Minor enhancement: added the ability to shift the current semester when grades have been finalized. The current semester indicates that all modules taken in previous semesters have been completed and should be included in the calculation of the current CAP.
-
Code contributed: [Reposense]
-
Other contributions:
-
Project Management
-
Put up user stories
-
-
Refactored Code
-
Morphed the original Person class in Address Book to contain the attributes of the module taken by the student - Level 4 code base
-
-
Documentation:
-
Changed some of the prose of the User Guide, Developer Guide (see above PR)
-
Modified some sections of User Guide, Developer Guide
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users, such that technical terms describing how the application works are reduced as end-users are only concerned with how the application can help them. The guide will include how students can use the application to manage their CAP and workload expectations while planning for modules to take. |
Check CAP limits: cklimit
To find out if their current plans are suitable in maintaining their CAP for each semester, students would like to:
-
Know what their current CAP is.
-
Be able to estimate their minimum and maximum projected CAP based on their estimated grade range for each module
-
Find out if any semester has too many difficult modules that would pull down their CAP unexpectedly, or too many easy modules that could be distributed to other semesters to maintain a more steady and predictable CAP for all semesters.
GradTrak is able to consolidate all the information about the modules they plan to take and the limit preferences they have for each semester. This allows the student to run a CAP analysis on their current module plan and generate the results to be printed all in one page on their screen.
The edit command allows students to indicate their expected minimum and maximum grades for each module they plan to take.
|
The setlimit command allows students to indicate their CAP preferences for each semester.
|
The cklimit
command calculates the expected minimum and maximum CAP of each semester and checks them against the limit preferences set by the student.
Format: cklimit
The image below shows the display after using the cklimit
command
cklimit
is displayedCheck workload limits: cklimit
To find out if their current plans are optimized in workload distribution, students would like to:
-
Know what is the total number of workload hours for each semester in their current module plan.
-
Find out if any semester is too heavy or light on any type of workload that could suggest a reallocation of modules to redistribute the workload across all semesters.
GradTrak is able to consolidate all the information about the modules they plan to take and what limit preferences they have for each semester. This allows the student to run a workload analysis on their current module plan and generate the results to be printed all in one page on their screen.
The edit command allows students to indicate their expected workloads for each module they plan to take.
|
The setlimit command allows students to indicate their workload preferences for each semester.
|
The cklimit
command calculates the total expected weekly workload of each semester and checks them against the limit preferences set by the student.
Format: cklimit
The image below shows the display after using the cklimit
command and scrolling down the result page to the section on workload information:
cklimit
is displayed after scrolling down the result pageSet the current semester: cursem
GradTrak keeps track of the current semester of the student and considers all modules taken before the current semester to be completed.
All completed modules must have a finalized grade and will be included in the calculation of the current CAP during the cklimit
command.
After the student receives the results of the modules they took in the latest semester, they can confirm the grades attained in that semester and update GradTrak with their final grades. They can then inform GradTrak of their current semester to indicate completion of all modules in the previous semesters, so that the calculation of their current CAP will be updated as well.
The cursem
command updates GradTrak with the current semester.
Format: cursem SEMESTER
Examples:
-
cursem Y3S2
Sets the current semester to the second semester of year 3. -
cursem GRAD
Sets the current semester to the graduated semester.
Set CAP limits: setlimit
Some students have a desired CAP for graduation. They may like to plan their modules such that it helps them to keep their CAP at a suitable range at all times. This helps to ensure that they can easily apply for programs with minimum CAP requirements such as the Student Exchange Program, or NUS Overseas Colleges, or maintain the CAP requirement of their scholarship for each semester.
GradTrak can keep track of their CAP limit preferences so that it is possible to help them detect whether their current module plan fulfils their preferences.
The cklimit command allows the student to check their limit preferences against their current module plan.
|
The setlimit
command allows you to set the minimum and maximum preferred CAP for a semester.
Format: setlimit SEMESTER [mincap/MIN_CAP] [maxcap/MAX_CAP]
Examples:
-
setlimit Y1S1 mincap/2.52 maxcap/5
This sets the minimum CAP acceptable to 2.52 and maximum CAP acceptable to 5.00 for the first semester in year 1.
Set workload limits: setlimit
Some students who do not have a strong programming background may be slightly uncomfortable taking multiple programming modules in year 1 as they may feel too stressed from huge weekly lab workloads. Other students who like project work may like to take 1 or 2 team-based modules per semester that focuses on communication skills.
GradTrak can keep track of their workload limit preferences for each semester so that it is possible to help them detect whether their current module plan fulfils their preferences. Various types of workload limits such as total number of weekly lecture hours, tutorial hours, lab hours, project hours, and preparation hours can be set by the student.
The setlimit
command allows you to set the minimum and maximum total weekly workload limits for a semester.
Format: setlimit SEMESTER [minlec/MIN_LECTURE_HOURS] [maxlec/MAX_LECTURE_HOURS] [mintut/MIN_TUTORIAL_HOURS] [maxtut/MAX_TUTORIAL_HOURS] [minlab/MIN_LAB_HOURS] [maxlab/MAX_LAB_HOURS] [minproj/MIN_PROJ_HOURS] [maxproj/MAX_PROJ_HOURS] [minprep/MIN_PREP_HOURS] [maxprep/MAX_PREP_HOURS]
Examples:
-
setlimit Y1S2 minlec/2.5 maxproj/3
This sets the minimum number of weekly lecture hours acceptable to 2.5 and maximum number of weekly project hours acceptable to 3 for the second semester in year 1.
End of extract of my contributions to the User Guide. |
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. This is so that future developers who wish to maintain and update my code will able to do so easily after reading the guide and understanding how the application works. The guide will include sequence diagrams about how the |
Checking of limits
Current Implementation
The cklimit
command is able to calculate the CAP and workload information of the current module plan and display the results in a report together with the preferred limits set by the student for comparison.
The LimitChecker
class does all the computation and generation of the report.
It makes use of the following classes as input:
-
Semester
that holds the current semester -
ObservableList
ofSemesterLimits
that holds the current semester limits -
ObservableList
ofModuleTakens
that holds the list of modules currently planned -
ModuleInfoList
that holds the list of modules with the number of module credits they have
The LimitChecker class is modelled with the class diagram as shown below.
LimitChecker
class diagramGradTrak uses the following classes to store and manipulate the variables for calculation:
-
CapAverage
-
WeightedGrade
-
ModuleInfoCredits
The CapAverage
class contains an ArrayList
of WeightedGrades
.
Each WeightedGrade
has a CAP score and information on the number of module credits weighted by the score.
The aggregated minimum and maximum expected CAP is calculated with the minimum and maximum expected CAP of every module taken respectively.
The current CAP only includes modules that are completed. Modules are considered completed if they are taken on a semester before the current semester.
The CAP of the student is calculated using the formula below.
The total number of hours for each type of workload for each semester are also summed up to be displayed.
Once all the calculations are completed, the HTML string report is generated and stored in the checkedReport
variable in the LimitChecker
to be displayed.
LimitChecker
implements the ClassForPrinting
and can be used to set the HTML string generated to be displayed on the BrowserPanel
using the setSelectedClassForPrinting
method as seen below.
ClassForPrinting
Design Considerations
Aspect: Having to change multiple types of limits.
-
Current choice: Using a single command to check both the CAP limits as well as the workload limits and print the results all to one page
-
Pros: Only one command needs to be known and it can check everything in one page to ensure that the module plan meets the selected limit preferences
-
Cons: Unwanted information that was not requested will also be shown on the page and may cause confusion
-
-
Alternative: Using separate commands to display CAP limits and workload limits on their own individual page
-
Pros: The information needed can be easily identified from the pages displayed
-
Cons: Two commands need to be known and keyed in to check the limits every time a modification is made to the module plan
-
The current choice was chosen because the student will become more experienced and familiar with GradTrak over time and be less confused by the result page. Scrolling up and down the page is easier than having to type two commands alternatively to view the limits.
Possible Improvements
-
Check if any row has their minimum or maximum limits violated and highlight them to student
-
Style the table to suit the theme of the app so that the student has a better experience using the app
Current Semester Tracking
Current Implementation
The cursem
command allows the student to track the current semester using GradTrak. This indicates completion of all modules in the previous semesters and includes them in the current CAP computation during the cklimit
command.
The interaction of how the cursem
command interacts with the system is shown below as a sequence diagram.
Design Considerations
Aspect: Storage location of the current semester.
-
Current choice: Storing of current semester within the
VersionedGradTrak
-
Pros: Allows the
cursem
command to be undoable and redoable -
Cons: The storage file
gradtrak.json
has to contain more than just the modules taken and it is difficult to make changes as it would require restructuring a large part of the application and multiple unit tests.
-
-
Alternative: Storing of the current semester outside of the
VersionedGradTrak
together with the module and course information-
Pros: Minimal changes are required to implement it
-
Cons: Problems may occur later on in maintaining the integrity of the application as
cursem
can only be performed if grades in the previous semesters have been finalized. Theundo
andredo
commands can bypass the checks for finalized grades and lead to instability in the application.
-
The current choice was chosen because it will be worth the effort to restructure the application storage to make GradTrak easier to develop in the future and be less likely to cause problems.
Possible Improvements
-
Prevent the student from adding or editing his module plan if doing so will violate the limits set
-
Allowing the student to type semester indexes instead of the entire semester name
Semester CAP and workload management feature
Current Implementation
The setlimit
command allows the student to set CAP limits and workload limits for each semester. This helps the student manage the difficulty and time required of the modules taken. Various types of limits can be set, such as the minimum and maximum number of weekly lecture hours, tutorial hours, lab hours, project hours, and preparation hours acceptable, as well as the minimum and maximum CAP acceptable for each semester.
The interaction of the setlimit
command with the system is shown below as a sequence diagram.
End of extract of my contributions to the Developer Guide. |