User Guide
Table of Contents
- Overview
- Quick start
- User interface layout
- User input restrictions
- Features
- GUI display restrictions
- FAQ
- Command summary
Overview
Finding it hard to manage your student contact details and keep track of their progress?
Finding it a hassle to keep a list of student tasks and scores?
MATHUTORING helps you solve these problems!
MATHUTORING, a centralised desktop application targeted to private Math tuition teachers, helps you manage student contact details and performance by keeping student contact details, tasks, and scores. You can also see score charts and statistics!
What’s more, you can generate a PDF report of your student containing the student’s tasks and scores. If you need to switch to a new device, you can also export and import your previous data into the application!
MATHUTORING is optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, MATHUTORING can get your contact management tasks done faster than traditional GUI apps.
Quick start
-
Ensure you have
Java 11or above installed in your Computer. -
Download the latest
mathutoring.jar. -
Copy the file to the folder you want to use as the home folder for your MATHUTORING app.
-
Open a command terminal,
cdinto the folder you put the jar file in, and use thejava -jar mathutoring.jarcommand to run the application.
The initial GUI below should appear in a few seconds. Note how the app contains some sample data for your reference, you are free to delete the sample data after you get familiar with the MATHUTORING.
-
Type the command in the command box and press
Enterto execute it. e.g. typinghelpand pressingEnterwill open the help window.
Some example commands you can try:-
list: Lists all students in the student list. -
add n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 c/87849999 t/female t/primary: Adds a student namedJohn Doeto the student list in MATHUTORING with two tags attached. -
delete 3: Deletes the 3rd student (if the student exists) shown in the current list. -
clear: Deletes all students. -
exit: Exits the app.
-
-
Recommended minimum screen size: 740x700.
-
Refer to the Features below for details of each command.
User interface layout
There are two options to display a student’s scores (score list and score chart) by clicking the Text and Chart buttons (referred as Switch Display Button below) respectively.
Layout with score list

Layout with score chart

User input restrictions
To achieve the best performance, we have set restrictions for the user command input.
Here is the summary for input restrictions. Users are advised to skim through all the restrictions to avoid command input mistakes.
Student contact
Name
A name can only contain alphanumeric characters and spaces (Blanks are not allowed).
Phone/Contact number
- A phone/contact number must have at least 3 digits and no more than 15 digits.
An email should be of the format local-part@domain and adheres to the following constraints:
- The local-part should only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).
The local-part may not start or end with any special characters. - This is followed by a ’@’ and then a domain name. The domain name is made up of domain labels separated by periods.
The domain name must:
- end with a domain label at least 2 characters long
- have each domain label start and end with alphanumeric characters
- have each domain label consist of alphanumeric characters, separated only by hyphens, if any.
Address
No restrictions.
Tags
A tag can only contain alphanumeric characters and should not contain more than 20 characters.
Task
Name/Title
A name can only contain alphanumeric characters and spaces (Blanks are not allowed).
Score
Label
A label can only contain alphanumeric characters and spaces (Blanks are not allowed).
Value
A value can be any integer or a number with one decimal place from 0 to 100 (inclusive).
Date
The format of a date must be in yyyy-MM-DD, and must not be in the future.
General fields
Index
An index must be a positive integer 1, 2, 3, … (one-based index). Note if the index given is too large and exceed the integer limit, the command will be deemed as invalid.
File path for export
- File path separator (e.g. backward/forward slash) should follow user’s operating system.
- e.g. Windows uses backward slash and Mac uses forward slash
- Export path should be a directory, not a file!
- The directory cannot be a write-protected folder!
File path for import
- File path separator (e.g. backward/forward slash) should follow user’s operating system.
- e.g. Windows uses backward slash and Mac uses forward slash
- Import path should be a file, not a directory!
Features
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by the user.
e.g. inadd n/NAME,NAMEis a parameter which can be used asadd n/John Doe. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]can be used asn/John Doe t/primaryor asn/John Doe. -
Items with
… after them can be used multiple times including zero times.
e.g.[t/TAG]…can be used as(i.e. 0 times),t/secondary,t/secondary4 t/secondaryetc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable. -
If a parameter is expected only once in the command, but the user specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if the user specifyp/12341234 p/56785678, onlyp/56785678will be taken. -
Extraneous parameters for commands that do not take in parameters (including
help,list,exit,clear, andswitch) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp. -
Command words are case-insensitive.
e.g. if the command specifies such ashelp,HELP,Help…, it will be interpreted ashelp.
Managing student contact
1. Adding a student: add
Adds a student to the student list.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/CONTACT_PARENT [t/TAG]…
Tips:
- A student is allowed to have alphanumeric or numeric names, however, special characters (e.g.
à,_) are not allowed. - If a student does not have a phone number, their parent’s contact number can be used as the student’s phone number.
- A student can have any number of tags (including 0)
Caution:
- In order to avoid potential confusion, we do not allow any student to have the same name regardless of the letter cases (e.g. Harry, HARRY, harry are deemed as same name).
- If the user wishes to add in a student who has the same name as an existing student in the student list, consider adding a number after the student’s name to distinguish them. e.g. Emily and Emily 2 are acceptable names.
Note about the avatars (profile pictures):
- The avatar will change if the student has a “gender” tag.
- The “gender” tag include male and female (case-insensitive). If a student does not have any gender tag or have both gender tags (male and female), the avatar will stay as default.
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 c/948372948-
add n/Betsy Crowe t/primary c/83927482 e/betsycrowe@example.com a/Downtown p/1234567 t/primary3
2. Deleting a student: delete
Deletes the specified student from the student list.
Format: delete INDEX
- Deletes the student at the specified
INDEX. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
listfollowed bydelete 2deletes the 2nd student (if the student exists) in the student list.
Beforedelete 2is executed, the studentBernice Yuis shown in the Student List.
After delete 2is executed, the studentBernice Yuis deleted from the Student List.
-
find Betsyfollowed bydelete 1deletes the 1st student (if the student exists) in the results of thefindcommand. -
filter femalefollowed bydelete 3deletes the 3rd student (if the student exists) in the results of thefiltercommand.
3. Editing a student: edit
Edits an existing student in the student list.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [c/CONTACT_PARENT] [t/TAG]…
- Edits the student at the specified
INDEX. The index refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, all the existing tags of the student will be removed. i.e. adding of tags is not cumulative.
- The user can remove all the student’s tags by typing
t/without specifying any tags after it. - We allow the user to edit the
PHONE_NUMBERandCONTACT_PARENTto be the same. - The user is not allowed to change the name of a student to be the same as any existing student in the list.
Examples:
-
edit 1 p/91234567 e/johndoe@example.comEdits the phone number and email address of the 1st student to be91234567andjohndoe@example.comrespectively. -
edit 2 n/Betsy Crower t/Edits the name of the 2nd student to beBetsy Crowerand clears all existing tags.
Before command execution:
After command execution:
4. Checking a student: check
Displays the information of the student being checked, including their task list and score list.
Format: check INDEX
- Checks the student at the specified
INDEXand displays the task list and score list of the student. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
Note:
After the user checked a student, the respective student’s task list and score list will continue to be displayed, unless:
- The respective student (the latest checked student) is being deleted.
- The respective student (the latest checked student) is being edited.
- The student list being cleared.
- New student data (.json file) is being imported.
Any of the above actions will alter the status to no student being checked now.
Examples:
-
check 2checks the 2nd student in the student list, the respective task list and score list will show on the right side of the application window.Before command execution:
After command execution:- Student has no tasks and scores:
- Student has tasks and scores:
- Student has no tasks and scores:
5. Finding a student: find
Finds students whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g.
hanswill matchHans - The order of the keywords does not matter. e.g.
Hans Bowill matchBo Hans - Only the name is searched.
- Only full words will be matched e.g.
Hanwill not matchHans - Students matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
find JohnreturnsjohnandJohn Doe -
find alex davidreturnsAlex Yeoh,David Li
6. Filtering students: filter
Filters students whose tags match with any of the given keywords.
Format: filter KEYWORD [MORE_KEYWORDS]
- The filter is case-insensitive. e.g.
primarywill matchPrimary - The order of the keywords does not matter. e.g.
primary primary4andprimary4 primaryhave the same filter results. - Only the tag is searched.
- Only full words will be matched e.g.
primarywill not matchprimary4 - Students whose tag matches at least one keyword will be returned (i.e.
ORsearch). e.g.primary primary4will return students with tags of eitherprimary,primary4, or both.
Examples:
-
filter primaryreturns tagprimary,Primary. -
filter secondary secondary2returns students with tags of eithersecondary,secondary2, or both.
7. Listing all students: list
Lists all the students in the student list.
Format: list

Managing task list of a student
1. Adding a task for a student: addtask
Adds a task to a specific student.
Format: addtask INDEX t/TASK_TITLE
- Adds the given task to the student at the specified
INDEX. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
- A task can have alphanumeric or numeric names, however, special characters (e.g.
à,_) are not allowed. - A task with the same name as a task already in the task list cannot be added to the task list.
- The name of a task is case-insensitive. e.g.
do homeworkis the same asDo Homework
Examples:
-
listfollowed byaddtask 2 t/finish Math Paper 1adds the taskfinish Math Paper 1to the 2nd student of the student list.
The following result assumes that the user has checked the student before.
-
check 2followed byaddtask 1 t/Complete A Math Exerciseadds the taskComplete A Math Exerciseto the student being checked.
2. Deleting a task of a student: deletetask
Deletes the specified task from the task list of a student.
Format: deletetask INDEX_OF_STUDENT INDEX_OF_TASK
- Deletes the task at the specified
INDEX_OF_TASKof a specified student (INDEX_OF_STUDENT). - The first index refers to the index number shown in the displayed student list and the second index refers to the index of the task in the displayed task list of the student.
- Both indexes must be positive integers 1, 2, 3, …
Examples:
-
listfollowed bydeletetask 2 3deletes the third task of the 2nd student in the student list.
The following result assumes that the user has checked the student before.
Before command execution:
After command execution:
-
find Betsyfollowed bydeletetask 1 6deletes the sixth task of the 1st student in the results of thefindcommand.
3. Marking a task of a student: markcomplete, markinprogress, marklate
Marks the specified task from the task list of a student as complete, in progress, or late.
Format:
Mark task as complete: markcomplete INDEX_OF_STUDENT INDEX_OF_TASK
Mark task as in progress: markinprogress INDEX_OF_STUDENT INDEX_OF_TASK
Mark task as late: marklate INDEX_OF_STUDENT INDEX_OF_TASK
- Marks the task at the specified
INDEX_OF_TASKof a specified student (INDEX_OF_STUDENT) as complete, in progress or late, depending on the command called. - The first index refers to the index number shown in the displayed student list and the second index refers to the index of the task in the displayed task list of the student.
- Both indexes must be positive integers 1, 2, 3, …
- The default status for a newly added task is in progress.
Examples:
-
listfollowed bymarkcomplete 2 3marks the third task of the 2nd student in the student list as complete.The following result assumes that the user has checked the student before.
Before command execution:
After command execution:
-
listfollowed bymarklate 2 3marks the third task of the 2nd student in the student list as late.
The following result assumes that the user has checked the student before.
Before command execution:
After command execution:
-
find Betsyfollowed bymarklate 1 6marks the sixth task of the 1st student in the results of thefindcommand as late.
Managing score list of a student
1. Adding a score for a student: addscore
Adds a score to a specific student.
Format: addscore INDEX l/LABEL v/VALUE_OF_SCORE d/DATE
- Adds the given score to the student at the specified
INDEX. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
- A score can have alphanumeric or numeric labels, however, special characters (e.g.
à,_) are not allowed. - The given
VALUE_OF_SCOREcan be any number from 0 to 100. - The given
VALUE_OF_SCOREcan either be an integer or a number with one decimal place - Exams on different dates can have the same
Label. - No two exams can have the same
Date.
Note about format of DATE:
- The format of
DATEmust beyyyy-MM-DD. For example,2022-02-20represents 20 February 2022. - If the
DATEentered by the user is in the future, will not be allowed.
Caution:
- In order to avoid potential confusion, we only allow one score per day and the full marks of each score is 100.
- If there are two exams in one day, e.g.
Midterm Math Paper 1andMidterm Math Paper 2, the user can either combine these two exams to one score with labelMidterm Mathor add them in separate dates. - If the full score of a test is not 100, please convert the score value to a percentage value before entering.
Examples:
-
listfollowed byaddscore 2 l/Midterm Math Paper v/99.5 d/2023-03-02adds aMidterm Math Paperscore with a value of99.5and dated2022-03-02to the 2nd student in the student list.
The following result assumes that the user has checked the student before.
- Current display for score tab is using score list.
- Current display for score tab is using score chart.
- Current display for score tab is using score list.
-
check 5followed byaddscore 5 l/CA2 A Math v/50 d/2021-09-09adds aCA2 A Mathscore with a value of50and dated2021-09-09to the student being checked.
2. Deleting a score of a student: deletescore
Deletes the specified score from the score list of a student.
Format: deletescore INDEX_OF_STUDENT INDEX_OF_SCORE
- Deletes the score at the specified
INDEX_OF_SCOREof a specified student (INDEX_OF_STUDENT). - The first index refers to the index number shown in the displayed student list and the second index refers to the index of the score in the displayed score list of the student.
- Both indexes must be positive integers 1, 2, 3, …
Examples:
-
listfollowed bydeletescore 2 1deletes first score of the 2nd student in the student list. The following result assumes that the user has checked the student before.
- Current display for score tab is using score list.
Before command execution:
After command execution:
- Current display for score tab is using score list.
-
find Betsyfollowed bydeletescore 1 2deletes second score of the 1st student in the results of thefindcommand.
3. Switching between score tabs: switch
Switches between the score list and score chart tabs.
Format: CLI and GUI supported.
CLI
switch
GUI
Click the Text or Chart button to switch between score list and score chart tabs respectively.

Managing the data of the students
1. Exporting the data of the students: export
Exports all the student’s data out. Users can export with or without specifying the path. export p/ is also allowed.
The default exported position for CLI will be in the data folder under the home folder (the folder that contains the “mathutoring.jar” file).
The exported file name is data.json.
Format: CLI and GUI supported.
CLI
export [p/FILE_PATH]
GUI
Click the “File” on the top menu, then choose “Export” under the drop-down list.
An export window will pop up, the user is required to specify which folder to store the exported file.

Examples:
-
exportwill export the file as a JSON file[JAR file location]/data/data.json - For Windows users
-
exportp/C:\bin exportdata.jsonto bin folder under C disk.
-
- For Mac users
-
exportp//Users/username/Desktop exportdata.jsonto desktop.
-
Note about the format of FILE_PATH:
- For Windows users, the format of
FILE_PATHmust bep/C:\Users\username\Downloads. - For Mac users, the format of
FILE_PATHmust bep//Users/username/Desktop.
2. Importing the data of the students: import
Imports student data into the application. Users can import the file by dragging the file in or choosing the file path.
The imported file must be in .json format.
Format: CLI and GUI supported.
CLI
import p/FILE_PATH
GUI
Click the “File” on the top menu, then choose “Import” under the drop-down list. An import window will pop up, the user can choose to either drag the file in or choose a specific file path.

Examples:
- For Windows users
-
importp/C:\bin\data.json.
-
- For Mac users
-
importp//Users/username/Desktop/data.json.
-
Note about the format of FILE_PATH:
- For Windows users, the format of
FILE_PATHmust bep/C:\bin\FILE_NAME. - For Mac users, the format of
FILE_PATHmust bep//Users/username/Desktop/FILE_NAME.
3. Exporting the progress of a student: exportp
Exports the specified student progress into a PDF file. Users can export without specifying the path. exportp p/ is not allowed. The default
exported position for CLI will be under the home folder.
Format: CLI and GUI supported.
CLIexportp INDEX [p/FILE_PATH]
GUI
Click the “Export Progress Report” button of a student in the student list. An export progress window will pop
up, the user is required to specify which folder to store the exported file.
- Exports the score list and task list of the specified student
INDEXin the form of a PDF file. - The
INDEXmust be a positive integer 1, 2, 3, … - If
FILE_PATHis not specified, file will be exported as a JSON file in<JAR file location>/data -
FILE_PATHshould be a valid path to a directory. - The exported file name is
<STUDENT_NAME>'s Progress Report.pdf, e.g.Alex Yeoh's Progress Report.pdf - Sample PDF output file: Alex Yeoh’s Progress Report.pdf

Examples:
-
exportp 1will export the file as a PDF file<JAR file location>/data/<STUDENT_NAME>'s Progress Report.pdf - For Windows users
exportp 1 p/C:\Users\John Doe\Downloads
- For Mac users
exportp 1 p//Users/johndoe/Documents
Note about the format of FILE_PATH:
- For Windows users, the format of
FILE_PATHmust bep/C:\Users\username\Downloads. - For Mac users, the format of
FILE_PATHmust bep//Users/username/Desktop.
General commands
1. Viewing help: help
Prompts the help page link together with a brief user guide that explain what commands are provided in MATHUTORING. For more detailed information such as how to use the syntax, please refer to the help page.
Format: CLI and GUI supported.
CLI
help
GUI
Click the “Help” on the top menu, then choose “Help” again under the drop-down list.

2. Clearing all entries: clear
Clears all entries from the MATHUTORING.
Format: clear

3. Exiting the program: exit
Exits from MATHUTORING.
Format: exit
Saving the data
- MATHUTORING data is saved in the hard disk automatically after any command. There is no need to save manually.
- If the user would like to save the MATHUTORING data in a different location, they can use the
exportcommand.
Editing the data file
MATHUTORING data are saved as a JSON file <JAR file location>/data/mathutoring.json. Advanced users are welcome to update data directly by editing that data file.
GUI display restrictions
We have set up a few GUI display restrictions in order to avoid the GUI being affect by extreme inputs (e.g. super long name) or small screen size, and thus hinder the user experience.
-
If the student name is more than 29 letters, the full student name will be displayed in the student list. However, the task list will only display the first 29 letters, with the remaining letters shown as ellipsis.
-
If the score label is more than 11 letters, the full score label will be displayed in the score list, text panel. However, the chart tooltip will only display the first 11 letters, with the remaining letters shown as ellipsis.
-
When you try to open external windows (Import, Export, Export Progress, and Help Windows), you might notice that it doesn’t open if it is minimized. The proposed solution is in the developer guide.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MATHUTORING home folder.
Q: I can’t find the mathutoring.json file and the files exported for export and exportp. What should I do?
A: Open the application using java -jar mathutoring.jar instead of opening the application by clicking the JAR file. More details can be found in the Quick start section.
Command summary
| Action | Format, Examples |
|---|---|
| Add a Student |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS c/PARENT_PHONE [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 c/11112222 t/friend t/primary
|
| Delete a Student |
delete INDEXe.g., delete 1
|
| Edit a Student |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [c/PARENT_PHONE] [t/TAG]…e.g., edit 2 n/James Lee e/jameslee@example.com c/12348888
|
| Check a Student |
check INDEXe.g. check 1
|
| Find a Student |
find KEYWORD [MORE_KEYWORDS]e.g., find James Jake
|
| Filter Students |
filter KEYWORD [MORE_KEYWORDS]e.g., filter primary secondary
|
| List Students | list |
| Add a Task |
addtask INDEX t/TITLEe.g addtask 2 t/Homework Assignment 1
|
| Delete a Task |
deletetask INDEX_OF_STUDENT INDEX_OF_TASKe.g deletetask 2 1
|
| Mark a Task |
mark(STATUS) INDEX_OF_STUDENT INDEX_OF_TASK (mark(STATUS) can be either markcomplete, marklate or markinprogress)e.g. markComplete 1 2 |
| Add a Score |
addscore INDEX_OF_STUDENT l/LABEL v/VALUE_OF_SCORE d/DATEe.g addscore 1 l/CA2 A Math v/70 d/2022-03-03
|
| Delete a Score |
deletescore INDEX_OF_STUDENT INDEX_OF_SCOREe.g. deletescore 3 4
|
| Switch Score Tab | switch |
| Export Data |
export [p/FILE_PATH]e.g. export p//Users/John
|
| Import Data |
import p/FILE_PATHe.g. import p//Users/John/data.json
|
| Export a Student’s Progress |
exportp INDEX [p/FILE_PATH]e.g. export 1 p//Users/John
|
| Help | help |
| Clear | clear |
| Exit | exit |