Teri Aiw - Project Portfolio

PROJECT: iGrad

Ui

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

Section by: Daryl & Teri

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 a Requirement

  • Adding additional details to a Module

  • Marking as Module as done and assigning a Grade to it

  • Tracking your academic progress: MCs and CAP

  • 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.

    walkthrough1

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

    walkthrough2.1
    walkthrough2.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

    walkthrough3.1
    walkthrough3.2

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

    walkthrough4.1
    walkthrough4.2

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

    walkthrough5.1
    walkthrough5.2

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

    walkthrough6.1
    walkthrough6.2

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+

    walkthrough7.1
    walkthrough7.2

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.

    walkthrough8

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.

    walkthrough9

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.

    walkthrough10.1
    walkthrough10.2
    walkthrough10.3

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

CourseSemestersClassDiagram
Figure 1. Course Semesters Class Diagram

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 command course set. totalSemesters will be equal to remainingSemesters as user has not entered any other data to indicate completion of semesters.

  • Semesters is updated through method computeSemesters in CourseInfo.

  • totalSemesters is changed by user through the command course edit.

  • remainingSemesters is computed by method computeRemainingSemesters. This method uses the moduleList to check for module that has Semester and Grade. The module which fulfils the mentioned and has the latest Semester 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.

CourseEditSequenceDiagram
Figure 2. Sequence Diagram when editing course name and course semesters.

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:

  1. The CourseEditCommandParser is called to parse the CourseEditCommand with the n/ and s/ prefix.

  2. The CourseEditCommand is executed and calls setCourseInfo to Model.

  3. Model calls the same method setCourseInfo to CourseBook.

  4. The new course Name and course Semesters is set in the CourseBook.

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.

CourseAchieveSequenceDiagram
Figure 3. Course Achieve Logic Sequence Diagram

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:

  1. The CourseAchieveCommandParser is called to parse the CourseAchieveCommand with the c/ prefix.

  2. The CourseAchieveCommand is executed and it calls method getCourseInfo in Model to get CourseInfo.

  3. The CourseAchieveCommand then proceeds to call method computeEstimatedCap in CourseInfo.

  4. The CourseAchieveCommand then passes the computed result to CommandResult

The below is a detailed description of what happens inside the Model:

CourseAchieveSequenceDiagram2
Figure 4. Course Achieve Model Sequence Diagram
  1. After the execute call, the CourseAchieveCommand calls method getCourseInfo in Model.

  2. Model then calls the same method getCourseInfo to CourseBook to retrieve CourseInfo.

  3. With the CourseInfo and Cap, CourseAchieveCommand calls method computeEstimatedCap in CourseInfo.

  4. CourseInfo calls method getSemesters and getCap to itself to get the following information:

    1. Semesters

    2. Cap

  5. computeEstimmatedCap computes and returns estimate Cap.

  6. The result is passed back to CourseAchieveCommand, which passes to CommandResult 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:

CourseAchieveActivityDiagram
Figure 5. Course Achieve Activity Diagram

Therefore, there are three types of result displayed to User:

  1. When User enters invalid Cap to achieve

  2. When computed Cap is invalid

  3. When computed Cap is valid