User Guide
TA-Assist is a desktop app for Teaching Assistants (TA) to keep track of students’ particulars and allocate marks for attendance and assignments. It is optimized for use via a Command Line Interface (CLI) while having the benefits of a Graphical User Interface (GUI).
This User Guide provides brief documentation on how you can install the application and describes how each feature should be used. Start by looking at the quick start guide to get you started.
- Quick Start
- Features
- Modes
-
Commands
- View help:
help
- Add a student:
add
- Edit a student:
edit
- Delete a student:
delete
- Locate student by name:
find
- List all students:
list
- Add classes:
addc
- Delete classes:
deletec
- Assign students to class:
assign
- Unassign students from class:
unassign
- List classes:
listc
- Exit the program:
exit
- Enter focus mode:
focus
- Clear all existing data:
clear
- View help:
- Focus Mode Commands
- Automated Data Backup
- Frequently Asked Questions (FAQ)
- Appendix
Quick Start
- Ensure you have Java
11
or above installed on your computer. - Download the latest
taassist.jar
from here. - Copy the file to the folder you want to use as the home folder for your TA-Assist.
- Double-click the file to start the app. The GUI similar to the one below should appear in a few seconds. Note how the app contains sample data.
Features
Before diving into the features, the examples in this guide are formatted with the following conventions:
- Words in
UPPER_CASE
are the parameters to be supplied by you.- e.g. in
add n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
.
- e.g. in
- Items in square brackets are optional.
- e.g.
n/NAME [c/CLASS_NAME]
can be used asn/John Doe c/CS1231S
or asn/John Doe
.
- e.g.
- Items with
...
after them can be used multiple times.- e.g.
c/CLASS_NAME...
can be used asc/CS1101S
orc/CS2030 c/ST2334
.
- e.g.
- Parameters, excluding index parameters, can be in any order.
- e.g. if the command specifies
n/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. - e.g. while
assign INDEX c/CLASS_NAME
is acceptable,assign c/CLASS_NAME INDEX
is not acceptable.
- e.g. if the command specifies
- If a parameter is expected only once in a command, but you specified it multiple times, the parser takes only the last occurrence of the parameter.
- e.g. if you specify
p/12341234 p/56785678
, onlyp/56785678
will be taken.
- e.g. if you specify
- Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
, andclear
) are ignored by the parser.- e.g. if you specify
help 123
, the parser interprets it ashelp
.
- e.g. if you specify
- Extraneous parameters for commands that do not expect such parameters may be parsed incorrectly.
- e.g. if you specify
addc c/CS1231S n/CS2030S
, the parser interprets it as adding a class named “CS1231S n/CS2030S”, which is not a valid class name. Hence, TA-Assist throws an error.
- e.g. if you specify
- All parameters and their constraints have been provided in the Appendix for your reference.
Modes
In TA-Assist, you can switch into a mode called focus mode, which lets you run tasks that are specific to a class. Therefore, some commands can only be executed when you are in focus mode. Commands that you can run in the default (unfocused) mode can also be run in focus mode. On the other hand, commands that are available only in focus mode cannot be executed in the default mode.
Let’s first begin with the commands available in the default mode.
Commands
Command | Format |
---|---|
help |
help |
add |
add n/NAME [p/PHONE_NUMBER][e/EMAIL][a/ADDRESS][c/CLASS_NAME...] |
edit |
edit INDEX [n/NAME][p/PHONE_NUMBER][e/EMAIL][a/ADDRESS] |
delete |
delete INDEX |
find |
find KEYWORD... |
list |
list |
addc |
addc c/CLASS_NAME... |
deletec |
deletec c/CLASS_NAME... |
assign |
assign INDEX... c/CLASS_NAME |
unassign |
unassign INDEX... c/CLASS_NAME |
listc |
listc |
exit |
exit |
focus |
focus c/CLASS_NAME |
clear |
clear |
Click here for the commands only available in the focus mode.
View help: help
Format: help
-
If TA-Assist is unable to redirect you to the page, i.e. due to a non-existent browser, unsupported operating system, etc., the following dialog box will be shown instead:
You can click on the “Copy URL” button to copy the URL shown in the help window, then paste the URL into the address bar of your favourite browser to visit this User Guide page.
Add a student: add
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [c/CLASS_NAME...]
- Adds a student named
NAME
into TA-Assist. - To add a student with class attributes, the class must exist in TA-Assist.
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 c/CS2103T
add n/Betsy Crowe a/Betsy street p/62353535 c/CS1231S c/CS1101S
Edit a student: edit
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS]
- Edits student data at the specified
INDEX
. - Only specified fields are modified.
Examples:
-
edit 2 n/John Doe
changes the 2nd student’s name to John Doe. -
edit 4 e/john.doe@example.com a/38 College Avenue East, 138601
changes the 4th student’s:- E-mail to john.doe@example.com.
- Address to 38 College Avenue East, 138601.
Delete a student: delete
Format: delete INDEX
- Deletes the student at the specified
INDEX
.
Examples:
-
list
followed bydelete 2
deletes the 2nd student in the student list. -
find Betsy
followed bydelete 1
deletes the 1st student in the results of thefind
command. -
focus c/CS2103T
followed bydelete 3
deletes the 3rd student in the CS2103T class.
Locate student by name: find
Format: `find KEYWORD…
- The search is case-insensitive, i.e.
Joh
matches withjohn
andJOHN
. - The search is performed on the currently displayed student list.
- To clear the current search, use the
list
command.
Examples:
-
find bert
finds students with bert in their name (case-insensitive), i.e. Edbert Geraldy, Bert Hendrick, Gerard Albert, etc. -
find ben chris
finds students with either ben or a chris in their name, i.e. chris ben, wonders ChRIs, bEn ten, etc. -
find alex david
returnsAlex Yeoh
,David Li
.
find
command performs its search over the currently displayed student list and replaces the displayed list with its search result. If you need to revert to the original list of all students, you may use the list
command.
List all students: list
Format: list
- The displayed list of students contains all the students in TA-Assist.
list
has different behavior in focus mode and outside focus mode.
Add classes: addc
Format: addc c/CLASS_NAME...
- Adds the classes with the specified names.
- Class names are converted to uppercase.
- e.g.
addc c/cs1101s
adds a class CS1101S.
- e.g.
- Class names are case-insensitive.
- e.g. If a class with the name CS1101S already exists,
addc c/cs1101s
does not add another CS1101S class.
- e.g. If a class with the name CS1101S already exists,
Examples:
-
addc c/CS2103T c/CS2100
adds the classes named CS2103T and CS2100.
Delete classes: deletec
Format: deletec c/CLASS_NAME...
- Deletes the classes with the specified names.
- Class names are case-insensitive.
Examples:
-
deletec c/CS2103T c/CS2100
deletes the classes named CS2103T and CS2100.
Assign students to class: assign
Format: assign INDEX... c/CLASS_NAME
- Assigns students specified by the given indices to an existing
CLASS_NAME
class. - The class name is case-insensitive.
- If a specified student is already assigned to the class, the assignment for that student will be skipped.
Example:
-
list
followed byassign 1 3 5 6 c/CS1231S
assigns the 1st, 3rd, 5th and 6th student in the displayed student list to the CS1231S class.
Unassign students from class: unassign
Format: unassign INDEX... c/CLASS_NAME
- Unassigns students specified by the given indices from an existing
CLASS_NAME
class. - The class name is case-insensitive.
- If a specified student is not assigned to the class, the unassignment for that student will be skipped.
Example:
-
list
followed byunassign 1 3 5 6 c/CS1231S
unassigns the 1st, 3rd, 5th and 6th student in the displayed student list from the CS1231S class.
List classes: listc
Format: listc
Exit the program: exit
Format: exit
Enter focus mode: focus
Format: focus c/CLASS_NAME
- Enters focus mode for the class named
CLASS_NAME
. - The class name is case-insensitive.
-
If successful, the GUI changes to one that is similar to the one below:
Example:
-
focus c/CS2100
enters focus mode for the CS2100 class, allowing you to manage data relating to CS2100.
Clear all existing data: clear
Format: clear
Focus Mode Commands
The following commands are ONLY available in focus mode.
Command | Format |
---|---|
list |
list |
adds |
adds s/SESSION_NAME... [d/DATE] |
deletes |
deletes s/SESSION_NAME... |
grade |
grade INDEX... s/SESSION_NAME g/GRADE_VALUE |
scores |
scores s/SESSION_NAME |
view |
view INDEX |
export |
export |
unfocus |
unfocus |
Click here for commands that are also available in default mode.
List all students in the class: list
Format: list
- The list of students only shows the students that are assigned to the currently focused class.
list
in focused mode has different behavior outside focus mode.
Create sessions: adds
Format: adds s/SESSION_NAME... [d/DATE]
- Creates new sessions with names
SESSION_NAME
on the sameDATE
. If theDATE
field is empty, the current date is used instead. - The
DATE
field should follow the formatYYYY-MM-DD
. - Session names are capitalised (i.e. the first character of each word will be converted to upper-case. The remaining characters of the word will be converted to lower-case).
- e.g.
adds s/tutorial ONE
adds a session Tutorial One.adds s/_tutorial_2
adds a session _tutorial_2.
- e.g.
- Session names are case-insensitive.
- e.g. If a session Lab 1 already exists,
adds s/lab 1
does not create another Lab 1 session.
- e.g. If a session Lab 1 already exists,
Example:
-
adds s/Lab1 s/Tutorial1 d/2022-08-11
creates sessionsLab1
andTutorial1
on 11 August 2022.
Delete sessions: deletes
Format: deletes s/SESSION_NAME...
- Deletes the sessions with the specified names.
- Session names are case-insensitive.
Examples:
-
deletes s/Lab1 s/Assignment3
deletes the session named Lab1 and Assignment3.
Grade session: grade
Format: grade INDEX... s/SESSION_NAME g/GRADE_VALUE
- Grades the students specified by the given indices on the session
SESSION_NAME
with a grade ofGRADE_VALUE
. -
GRADE_VALUE
must be a number between 0 and 1000 (decimal points are allowed). -
GRADE_VALUE
will be rounded to 2 decimal places. - The session name is case-insensitive.
Example:
-
grade 1 2 s/Lab 1 g/93
gives the students at index 1 and 2 a grade of 93 for the session Lab 1.
Show students’ grades for a session: scores
Format: scores s/SESSION_NAME
- Shows the grades of all students for the session
SESSION_NAME
. - The session name is case-insensitive.
Example:
-
scores s/Tutorial 11
shows the grades of all students for the session Tutorial 11, as shown below.In the above example,
- Edbert Geraldy, Lin Zechen, Ng Jing Xue, and Rezwan Arefin have been allocated a score of 100.0 for Tutorial 11.
- Tutorial 11 for Xu Yi has not been graded, hence her cell has been marked red.
View session grades of student: view
Format: view INDEX
- Shows the grades of the student at index
INDEX
for the currently focused class. - Only sessions that are graded for the student will have the grades displayed.
Example:
-
grade 2 s/Lab 1 g/93
thenview 2
returns1. Lab 1: 93
, which is the grade of the student at index 2 for the session Lab 1.
Export class data: export
Format: export
- The exported class data includes:
- Names of students in the class.
- Names of sessions for the class.
- The grades of the students for each session.
-
An example generated CSV file when opened in Microsoft Excel:
- The first column shows all the student names.
- Subsequent columns show the grades of students for various sessions (e.g. David Li scores 0 for Tutorial 1).
Exit focus mode: unfocus
Format: unfocus
- Alternatively, you can exit focus mode by clicking on the button shown here.
Automated Data Backup
On each launch of TA-Assist, if the save data loads without error, a backup of the save data is made and saved to data/taassist.json.bak
. If you need to revert a catastrophic change, you may simply quit the app and overwrite data/taassist.json
with the backup file.
data/taassist.json.bak
file will be overwritten if it exists.
Frequently Asked Questions (FAQ)
Q: How do I install Java?
A: You may refer to Oracle’s JDK Installation Guide.
Q: I double-clicked the JAR file but was unable to start the app. What do I do?
A: Open your preferred terminal and navigate to the directory the JAR file is located in. Then type in java -jar TaAssist.jar
to run the application.
Q: How do I transfer my data to another computer?
A: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous TA-Assist home folder.
Appendix
Parameters and Constraints
For all parameters, the following constraints are applied:
- As TA-Assist uses prefixes such as
p/
andc/
to identify the start of a new parameter, all parameters have the implicit constraint that they must not contain prefixes of another parameter if that other parameter is being used in a command.- e.g. You cannot add a student with the address
Commongrove n/123A
as then/123A
prefix will be parsed by TA-Assist as the Student’s name.
- e.g. You cannot add a student with the address
The following is the list of all parameters used in TA-Assist along with their constraints:
-
INDEX
- Indices must be positive integers.
- Indices must be within the indices shown in the displayed list.
-
KEYWORD
- Search keywords cannot contain spaces.
-
n/NAME
- Student names must not be empty.
- Student names must only contain alphanumeric characters and spaces.
-
p/PHONE_NUMBER
- Phone numbers must only contain numbers.
- Phone numbers must be at least 3 digits long.
-
e/EMAIL
- E-mails must be of the format
local-part@domain
, i.e.johndoe+work@s.mail.com
. -
local-part
must only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-
). -
domain
is made up of domain labels, separated by periods.- Each
domain
must end with a domain label of at least 2 characters long. - Each domain label must start and end with alphanumeric characters.
- Each domain label must consist of only alphanumeric characters, separated only by hyphens if any.
- Each
- E-mails must be of the format
-
a/ADDRESS
- Addresses must not be empty.
- Note that addresses follows the above implicit constraint.
-
c/CLASS_NAME
- Class names must be alphanumeric.
- Class names must not exceed 25 characters.
-
s/SESSION_NAME
- Session names must not be empty.
- Session names must only contain alphanumeric characters, underscores, and spaces.
-
d/DATE
- Dates must be of the format
YYYY-MM-DD
, i.e. 25th May 2022 must be written as2022-05-25
. - Dates must be valid, i.e.
2001-02-29
is not a valid date because the year 2001 is not a leap year.
- Dates must be of the format
-
g/GRADE_VALUE
- Grades must be a non-negative numerical value, i.e.
0
,100.0
, and12.34
. - Grades will be rounded to two decimal places.
- Grades must be a non-negative numerical value, i.e.