Overview
iGrad is a desktop module management and graduation tracking application. The user interacts with it using a CLI, and it has a GUI created with JavaFX, FXML and CSS.
Summary of contributions
-
Major Enhancement: added feature to calculate C.A.P. to achieve desired C.A.P.
-
What it does: allows the user to get an estimate of what C.A.P. they should expect to maintain per semester to achieve the desired C.A.P. that they want.
-
Justification: This feature allows users to better keep track and aim for better grades. It provides added convenience for users as it uses existing data that user has already input.
-
Highlights: Consideration for unachievable C.A.P. was included
-
-
Major Enhancement: Integrate Semesters tracking under course management feature
-
What it does: tracking of how many semesters a user has left for their course of study, calculated based on total semesters that user has input and completed semesters based on modules completed.
-
Justification: This feature provides convenience to users as it allows the user to know of such information without additional calculations. Therefore, it adds to user experience. This feature is also necessary for the calculation of C.A.P. feature.
-
Highlights: Tracking does not require any additional input by user, and is updated automatically on the UI.
-
Credits: Wayne for integrating backend to frontend functionality
-
-
Minor Enhancement: assisted Nathanael in adding feature of Course editing and deletion in initial phase of project.
-
Code contributed: [All commits][Project Code Dashboard]
-
Contribution to Team Based Tasks:
-
Added personalization to messages that are feedback to user while using the application.
-
Standardized overall messages to be shown to user while using the application.
-
Presented project as part of the product pitch team.
-
Contributions to the User Guide
Given below are the sections I contributed to the User Guide. They showcase my ability to communicate with end-users of the product in question. Worked in conjunction with Daryl. |
Walkthrough
This segment details a simple tutorial on how to use the application. It provides a step-by-step guide on how to utilise the main components of the application, and covers the following:
-
Choosing an
Avatar
-
Adding a
Course
-
Adding a course
Requirement
-
Adding a
Module
-
Assigning a
Module
to aRequirement
-
Adding additional details to a
Module
-
Marking as
Module
as done and assigning aGrade
to it -
Tracking your academic progress:
MCs
andCAP
-
Exporting your data
Here is a 10-step guide on how to use iGrad
.
Start up the application
Section by: Daryl
-
Open up the application by opening the
iGrad.jar
file. -
Select an avatar by typing its name before pressing enter.
-
The avatar will act as your guide for the application.
Enter your course details
Section by: Daryl
-
Course refers to the name of the course you are currently enrolled in.
-
Enter the name of your course in the format:
course add n/COURSE_NAME s/TOTAL_SEMESTERS
-
E.g.
course add n/Computer Science s/2
Key in your graduation requirements
Section by: Daryl
-
Requirements refer to degree requirements needed in the entered course.
-
Enter your course graduation requirements in the format:
requirement add t/REQUIREMENT_TITLE u/MCS_REQUIRED
-
E.g.
requirement add n/General Education u/20
Add modules to the tracker
Section by: Daryl
-
Modules refer to modules that you have taken or are planning to take.
-
Enter modules into the system in the format:
module add n/MODULE_CODE t/MODULE_TITLE u/MCs
-
E.g.
module add n/GER1000 t/Quantitative Reasoning u/4
Assign your modules
Section by: Daryl
-
Assign modules under their respective requirements.
-
Enter assign in the format:
requirement assign REQUIREMENT_CODE n/MODULE_CODE
-
Note: Requirement codes are generated by the system.
-
E.g.
requirement assign GE0 n/GER1000
Key in additional details for your modules
Section by: Teri
-
Edit modules with additional information such as Semester. Other information that has already be input can be edited as well.
-
Enter edit to be done to the module in the format:
module edit MODULE_CODE s/SEMESTER
-
Note: For Semester, it has to follow the format of
Y_S_
-
E.g.
module edit GER1000 s/Y1S1
Mark a module as done and assign a grade to it
Section by: Teri
-
A module is considered as done when a grade is assigned to it.
-
Enter grade for the module in the format:
module done MODULE_CODE g/GRADE
-
E.g.
module done GER1000 g/A+
Track your MCs
Section by: Teri
-
MCs refer to Module Credits.
-
MCs are automatically tracked and updated.
-
Total MCs count is the total of all requirement MCs.
-
MCs are fulfilled when modules that are within a requirement are marked done.
View your CAP
Section by: Teri
-
CAP refers to Cumulative Average Points and is out of 5 (max).
-
CAP is automatically tracked and updated.
-
CAP is updated whenever a module within a requirement is marked done with a grade.
Export your data
Section by: Teri
-
Data of your entire study plan can to exported to a comma-separated values (.csv) file.
-
Export your data in the format:
export
-
Note: Data file can be found in the same folder as this application.
Contributions to the Developer Guide
Given below are the sections I contributed to the Developer Guide. They showcase my ability to communicate technical information into documentation as well as my contributions to the project. |
Section by: Teri
Semesters
stores the total semesters and remaining semesters that a user has in the course.
The following are some noteworthy details on the Semesters
class/object:
-
Semesters
is first initialized when user does commandcourse set
.totalSemesters
will be equal toremainingSemesters
as user has not entered any other data to indicate completion of semesters. -
Semesters
is updated through methodcomputeSemesters
inCourseInfo
. -
totalSemesters
is changed by user through the commandcourse edit
. -
remainingSemesters
is computed by methodcomputeRemainingSemesters
. This method uses themoduleList
to check formodule
that hasSemester
andGrade
. Themodule
which fulfils the mentioned and has the latestSemester
will be taken as the latest completed semester.
Course Edit
Section by: Teri
Overview
Users can edit their course info, which are Name
and Semesters
by using the course edit
command.
Implementation
Here is how the courseInfo class updates when name and semesters of course is edited.
When a user edits a course, the user has to specify the prefix n/
for Name
or s/
prefix
for Semesters
.
Then the application proceeds to do the following steps:
-
The
CourseEditCommandParser
is called to parse theCourseEditCommand
with then/
ands/
prefix. -
The
CourseEditCommand
is executed and callssetCourseInfo
toModel
. -
Model
calls the same methodsetCourseInfo
toCourseBook
. -
The new course
Name
and courseSemesters
is set in theCourseBook
.
Course Achieve
Section by: Teri
Overview
Users can get an automatic calculation of their desired C.A.P. by using the course achieve
command and
entering their desired Cap
.
Implementation
The computation of C.A.P. is done through computeEstimatedCap
in courseInfo
which uses Semesters
and Cap
of courseInfo
.
When a user wants to calculate achievable C.A.P., the user has to specify the prefix c/
for Cap
.
Then the application proceeds to do the following steps:
-
The
CourseAchieveCommandParser
is called to parse theCourseAchieveCommand
with thec/
prefix. -
The
CourseAchieveCommand
is executed and it calls methodgetCourseInfo
inModel
to getCourseInfo
. -
The
CourseAchieveCommand
then proceeds to call methodcomputeEstimatedCap
inCourseInfo
. -
The
CourseAchieveCommand
then passes the computed result toCommandResult
The below is a detailed description of what happens inside the Model
:
-
After the execute call, the
CourseAchieveCommand
calls methodgetCourseInfo
inModel
. -
Model
then calls the same methodgetCourseInfo
toCourseBook
to retrieveCourseInfo
. -
With the
CourseInfo
andCap
,CourseAchieveCommand
calls methodcomputeEstimatedCap
inCourseInfo
. -
CourseInfo
calls methodgetSemesters
andgetCap
to itself to get the following information:-
Semesters
-
Cap
-
-
computeEstimmatedCap
computes and returns estimateCap
. -
The result is passed back to
CourseAchieveCommand
, which passes toCommandResult
and eventually returns to the user.
Design Considerations
Invalid and Unachievable C.A.P.
It is possible that a calculated Cap
to achieve is not a valid Cap
. In such situations, an exception is
thrown within the computeEstimatedCap
command and it is caught in the CourseAchieveCommand
. User will be
given feedback that the desired C.A.P. is not achievable.
The figure below illustrates this:
Therefore, there are three types of result displayed to User:
-
When User enters invalid Cap to achieve
-
When computed Cap is invalid
-
When computed Cap is valid