| layout | page |
|---|---|
| title | User Guide |
TAssist is a desktop application for Teaching Assistants (TAs) from NUS School of Computing to easily track and manage student information. It is optimized for use via a Command Line Interface (CLI), complemented by a user-friendly Graphical User Interface (GUI). If you can type fast, TAssist helps you complete student management tasks more quickly than traditional GUI-based apps.
- Table of Contents {:toc}
-
Ensure you have Java
17or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here. -
Download the latest
.jarfile from here. -
Copy the file to a folder you want to use as the home folder for TAssist.
-
Open the Command Prompt (Windows) or Terminal (Mac/Linux)
-
Navigate to the folder where you saved the
[CS2103T-W12-4][TAssist].jarfile usingcdcommand
Example (Windows):cd C:\Users\YourName\Downloads.
Example (Mac/Linux):cd /Users/YourName/Downloads. -
Type the following command and press Enter to run the application.
java -jar [CS2103T-W12-4][TAssist].jar -
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.

-
Type the command in the command box and press Enter to execute it. e.g. typing
helpand pressing Enter will open the help window.
Some example commands you can try:-
list: Lists all contacts. -
add n/John Doe p/98765432 e/johnd@u.nus.edu s/A0135246R: Adds a contact namedJohn Doeto the student list. -
delete 3: Deletes the 3rd contact shown in the current list. -
clear: Deletes all contacts. -
exit: Exits the app.
-
-
Refer to the Features below for details of each command.
-
If you are already familiar with TAssist, you can jump straight to our Command Summary Table to view all available commands.
-
To access this User Guide quickly, simply press
F1key at any time. -
TAssist allows users to personalize the appearance of the application by switching between different color themes.
Users can press theF2key to cycle through the available themes.
Available themes: Dark, Bright, Pink -
Viewing Upcoming Events Calendar:
F3
TAssist provides a calendar-style view to help you visualize upcoming assignments and timed events. Events are grouped and displayed by their due dates, along with the list of students assigned to each.- Press the F3 key to open the calendar-style event viewer.
- Display includes: Assignment names, Event type (e.g., assignment), Assigned students, Dates grouped chronologically
- An empty calendar will be shown if there are no current Assignments.
-
Use student ID and index interchangeably.
Most commands support both student ID and list index. For example:
github 1 g/https://github.com/johndoe
or
github A1234567B g/https://github.com/johndoe
ℹ️ 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/friendor 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/friend,t/friend t/familyetc. -
Parameters with prefix (p/, c/ etc.) can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable. -
Extraneous parameters for commands that do not take in parameters (such as
help,exitandclear) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp. -
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
-
Refer to Parameters for more information.
Opens the User Guide in your default browser and displays a message containing the link.
If the browser does not open automatically, you can manually copy and paste the link into your browser.

Format: help
F1
Adds a student to the student list.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL s/STUDENT_ID [g/GITHUB_URL] [r/REPOSITORY] [pt/TEAM] [c/CLASS_NUMBER] [t/TAG]… [pr/PROGRESS]
- The parameters
NAME,PHONE_NUMBER,EMAIL, andSTUDENT_IDmust be present. The rest are optional. - For more detailed information on each parameter, please read Parameters
- Note: Ensure that the
PHONE_NUMBER,EMAIL,STUDENT_ID, andGITHUBentered are unique, to avoid a duplicate entry error.
Examples:
add n/John Doe p/98765432 e/johnd@u.nus.edu s/A0000000B pt/ProjectTeam1 c/T01 t/ExchangeStudent pr/50add n/Betsy Crowe t/friend e/betsycrowe@u.nus.edu s/A0123456U g/https://github.com/betsy p/1234567 t/LifeScienceMajor
Shows a list of all students in the student list.
Format: list [f/FILTER_TYPE fv/FILTER_VALUE] [s/SORT_TYPE o/SORT_ORDER]
- All parameters are optional. Filters and sorting can be used together or independently.
- Note: Once a sort is applied using the list command, the list will remain sorted in that order throughout the session. To apply a different sort, use list again with a new sort type and order. If a sort is applied on a field where multiple students share the same value, their positions may change randomly after add/edit/update operations due to tie-breaking by the system.
FILTER_TYPE:
- progress: Filters students whose progress is less than or equal to the provided value.
- team: Filters by existing team names.
- class: Filters by existing class number.
FILTER_VALUE:
- PROGRESS: An integer between 0 and 100.
- TEAM: Must match an existing team name.
- CLASS: Must match an existing class number.
SORT_TYPE:
- name
- progress
- github
SORT_ORDER:
- asc — Ascending (A → Z or lowest → highest).
- des — Descending (Z → A or highest → lowest).
Examples:
list
Displays all students.list f/progress fv/60
Displays students with progress ≤ 60.list s/github o/asc
Displays all students, sorted by Github username in ascending lexicographical order.list f/progress fv/50 s/name o/des
Displays students with progress ≤ 50, sorted by name in descending lexicographical order.list f/team fv/Bang Bang
Displays students with the Team name 'Bang Bang', matched case-insensitively.
Edits an existing student in the student list.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [c/_NUMBER] [s/STUDENTID] [g/GITHUB_URL] [pt/TEAM] [c/CLASS_NUMBER] [t/TAG]… [pr/PROGRESS]
- 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 valid input values.
- When editing tags, the existing tags of the student will be removed i.e. adding of tags is not cumulative.
- You can remove all the student's tags by typing
t/without specifying any tags after it. - Tip:
editcannot be used to remove optional fieldsGithubandclass. To do so, refer to the respective sections Class or Github
Examples:
edit 1 p/91234567 e/johndoe@u.nus.edu
Edits the phone number and email address of the 1st student to be91234567andjohndoe@u.nus.edurespectively.edit 7 n/Betsy Crower t/
Edits the name of the 2nd student to beBetsy Crowerand clears all existing tags.
Finds students whose names contain any of the given inputs, whose student ID matches exactly, or whose class number matches exactly.
Format: find NAME [MORE_NAMES] or find STUDENT_ID or find CLASS_NUMBER
- The search is case-insensitive. e.g.
hanswill matchHans - The order of the names does not matter. e.g.
Hans Bowill matchBo Hans - Partial words will be matched e.g.
Hanwill matchHans - Students matching at least one name will be returned (i.e.
ORsearch). e.g.Han Bowill returnHans Gruber,Bo Yang - If a valid student ID is entered (e.g.
A1234567B), it will return the student with an exact match on that ID. - If a valid class number is entered (e.g.
T01), it will return all students in that class.
Examples:
find JohnreturnsjohnandJohn Doefind alex davidreturnsAlex Yeoh,David Li

find A1234567Breturns the student with that exact student IDfind T01returns all students in tutorial class T01
Assigns or removes a tutorial/recitation class for a student identified by either their displayed index or student ID
Format: class INDEX c/CLASS_NUMBER or class STUDENT_ID c/CLASS_NUMBER
CLASS NUMBERmust be eitherTxx,RxxorLxxwhere xx is integer from 01 to 99, (e.g. T15, R05, L99)- Note: 'T', 'R' and 'L' must be uppercase.
- 'T', 'R' and 'L' represent Tutorial, Recitation and Lab respectively.
- If assigning 'Lxx', a capital letter suffix is optional (e.g. L01C).
- Assigns or updates the class of the student at the specified
INDEXor matchingSTUDENT_ID - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
- To remove a class assignment, leave
c/empty (i.e.c/with no value)
Examples:
class 1 c/T01
Assigns class T01 to the 1st student in the list.class 2 c/
Removes the class from the 2nd student.class A1234567B c/R05
Assigns class R05 to the student with student IDA1234567B.
Updates the GitHub repository URL of a student, identified by either their displayed index or student ID.
Format:
repo INDEX un/GITHUB_USERNAME rn/REPOSITORY_NAME
or repo STUDENT_ID un/GITHUB_USERNAME rn/REPOSITORY_NAME
or repo INDEX r/REPOSITORY_URL
or repo STUDENT_ID r/REPOSITORY_URL
- The repository URL will be overwritten by the new input.
- Either
INDEX(a positive integer) orSTUDENT_IDmust be provided. - You may specify the repository using either:
un/andrn/(GitHub username and repository name), orr/with a full GitHub repository URL.
- Must be 1 to 39 characters long.
- Made up of alphanumeric characters.
- Separated by dashes (-) between segments.
- Cannot start or end with a dash.
- Made up of alphanumeric characters.
- Can contain dashes (-), underscores (_), and dots (.).
- Cannot be empty.
- Must start and end with an alphanumeric character.
- Must be in the format:
https://github.com/[USERNAME]/[REPOSITORY_NAME] [USERNAME]follows the same rules as above
Examples:
repo 2 un/Group-4 rn/WealthVault
Updates the repository of the 2nd student in the list tohttps://github.com/Group-4/WealthVaultrepo A0891334N un/Tutorial-G08 rn/BestApp
Updates the repository for student with student IDA0891334Ntohttps://github.com/Tutorial-G08/BestApprepo 3 r/https://github.com/team4/new.repo
Updates the repository of the 3rd student in the list to the specified Repository URL.repo A0789435N r/https://github.com/AY2425S2-CS2103T-W12-4/tp
Updates the repository for student with student IDA0789435Nto the specified Repository URL.
Updates the progress value of a student.
Format: progress INDEX pr/PROGRESS or progress STUDENT_ID pr/PROGRESS
- The
PROGRESSshows the percentage of the student's completion status for the module or assigned tasks. - The
PROGRESSmust be an integer between 0 and 100, inclusive. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
Examples:
progress 1 pr/75
Sets the progress of the first student in the list to 75%.progress A1234567B pr/50
Sets the progress of the student with Student ID A1234567B to 50%.
Updates the GitHub URL of a student, identified by either their displayed index or student ID.
Format: github INDEX g/GITHUB_URL or github STUDENT_ID g/GITHUB_URL
- Edits the
GITHUB_URLof the student at the specifiedINDEXor matchingSTUDENT_ID - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
- The GitHub URL must be a valid URL (e.g. starts with
https://github.com/) - To remove a GitHub assignment, leave
g/empty (i.e.g/with no value)
GITHUB_URL:
- Must be in the format
https://github.com/USERNAME - Username must be 1 to 39 characters long.
- Username must consist of alphanumeric characters that are separated only by dashes (-), if any.
- Username must start and end with an alphanumeric character.
Examples:
github 2 g/https://github.com/alice
Updates the 2nd student's GitHub link tohttps://github.com/alice.github A1234567B g/https://github.com/bob-devUpdates the GitHub link for the student with student IDA1234567B.github 3 g/removes the 3rd student's GitHub link.
Opens the GitHub page of a student, identified by either their displayed index or student ID, in your default web browser.
Format: open INDEX or open STUDENT_ID
- Opens the
GITHUB_URLof the student at the specifiedINDEXor matchingSTUDENT_ID. - 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 byopen 1opens the GitHub page of the first student shown in the list.open A1234567Bopens the GitHub page of the student with student IDA1234567B.
Adds a timed event (such as an assignment, project, or deadline) to the event list, which can be used to track important upcoming tasks.
Format: assignment n/NAME d/DATE
n/NAME: The title or description of the assignment/event.d/DATE: The deadline for the assignment/event.- Accepted date formats:
dd-MM-yyyy,dd-MM-yy, ordd-MM(defaults to current year) - The date must be a valid future date.
- Note: Assignments due on the current day cannot be added.
Examples:
assignment n/CS2103T Project d/30-10-2025
Adds a timed event named "CS2103T Project" with deadline on January 30, 2025.assignment n/Quiz 1 d/10-05
Adds an event named "Quiz 1" with the deadline on April 10 of the current year.
Lists all timed events in the system.
Format: view
- Shows all timed events with their names and deadlines, as well as their indices.
- Tip: enter
viewbefore assigning an assignment to manage tasks easier. - Note that assignments that has past their deadlines are not deleted for track keeping purposes, refer to
unassign
to see how to remove them.
Examples:
view
Displays all timed events in the timed event list.viewfollowed byassign T01 3
Displayed the timed event list, and assigns the 3rd timed event to all students in class T01.
Assigns a timed event using index in time event list to one or more students identified by their displayed index, student ID, or class number.
Format: assign STUDENT_INDEX TIMED_EVENT_INDEX or assign STUDENT_ID TIMED_EVENT_INDEX or assign CLASS_NUMBER TIMED_EVENT_INDEX
TIMED_EVENT_INDEX: The index of the timed event shown in the timed event list (must be a positive integer).STUDENT_INDEX: The index of the student from the displayed student list (must be a positive integer).STUDENT_ID: The student ID of the target student (e.g., A1234567B).CLASS_NUMBER: The tutorial/recitation/lab class number (e.g., T01, R05, L10, L20J).
Examples:
-
assign 2 1
Assigns the first timed event to the 2nd student in the list. -
assign A1234567B 2
Assigns the second timed event to the student with student ID A1234567B. -
assign T01 1
Assigns the first timed event to all students in class T01.
Removes a timed event from all assigned students and deletes the event from the timed event list.
Format: unassign TIMED_EVENT_INDEX
TIMED_EVENT_INDEX: The index of the timed event shown in the timed event list (must be a positive integer).- Unassigns the specified timed event from all students who were previously assigned to it.
- Deletes the timed event from the timed event list.
- After entering the command, you will be prompted to confirm the action:
- Type
Yto confirm the unassignment - Type
Nto cancel the unassignment - Any other input will prompt:
Invalid response. Please enter Y/N. Y/Ncan be upper or lower case
- Type
Example:
unassign 1
Unassigns the first timed event from all students and deletes the event from the list.
TAssist provides a calendar-style view to help you visualize upcoming assignments and timed events.
- Press the
F3key to open the calendar-style event viewer, or access it through the drop downView --> Calendar. - The calendar displays:
- Assignment names
- Event type (e.g., assignment)
- Assigned students
- Dates grouped chronologically
- An empty calendar will be shown if there are no current assignments.
Deletes the specified student from the student list, identified by either their displayed index or student ID.
Format: delete INDEX or delete STUDENT_ID
- Deletes the student at the specified
INDEXor matchingSTUDENT_ID. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
- After entering the command, you will be prompted to confirm the deletion:
- Type
Yto confirm the deletion - Type
Nto cancel the deletion - Any other input will prompt:
Invalid response. Please enter Y/N. Y/Ncan be upper or lower case
- Type
Examples:
listfollowed bydelete 2deletes the 2nd student from the list after confirmation.find Betsyfollowed bydelete 1deletes the 1st student in the search results after confirmation.delete A1234567Bdeletes the student with student ID A1234567B after confirmation.
Clears all entries from the student list.
Format: clear
Imports a CSV file containing both student data and active timed event data into the system. The file should follow the correct CSV format for both students and timed events.
Format: import INPUT_CSV_FILE_PATH
INPUT_CSV_FILE_PATH: The absolute path to the CSV file to be imported.- The absolute path format is dependent on the operating system.
- Relative paths are not supported.
Examples:
-
import /Users/Alice/Documents/T01.csv(Unix/mac)
Imports the CSV file located at/Users/Alice/Documents/T01.csvcontaining students and timed events. -
import C:\Users\Alice\Documents\T01.csv(Windows)
Imports the CSV file located atC:\Users\Alice\Documents\T01.csvcontaining students and timed events.
Exports the current student and active timed event data to a CSV file. The data is written in a structured format where students' details are saved along with active timed events.
Format: export OUTPUT_CSV_FILE_PATH
OUTPUT_CSV_FILE_PATH: The absolute path where the CSV will be saved.- The absolute path format is dependent on the operating system.
- Relative paths are not supported.
- If the parent directory of the CSV file does not exist, an error will occur, and the file will not be created.
Examples:
-
export /Users/Alice/Documents/T01.csv(Unix/mac)
Exports the current data containing students and timed events to/Users/Alice/Documents/T01.csv. -
export C:\Users\Alice\Documents\T01.csv(Windows)
Exports the current data containing students and timed events toC:\Users\Alice\Documents\T01.csv.
Exits the program.
Format: exit
TAssist data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
TAssist data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are welcome to update data directly by editing that data file.
Furthermore, certain edits can cause TAssist to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
- Must consist only of alphabets.
- Must not be blank.
- The first character must not be a whitespace.
Examples of valid names:
- Alice Gales
- Bob Smith III
- Deshaka Son Of Perera
Tip: Names with special characters should be entered in alphaneumeric characters only, as shown above.
- Must follow the format
AXXXXXXXN. - Must start with the uppercase letter
A. - Followed by exactly 7 digits (0–9).
- Must end with an uppercase letter from A to Z.
- Both
AandNmust be capitalized.
Examples of valid student IDs:
- A1234567B
- A7654321Z
- A0000000X
- Must only contain numeric digits.
- Must be between 3 to 15 digits long.
Examples of valid phone numbers:
- 123
- 98765432
- 812345223789762
- Must follow the format
local-part@u.nus.edu. - The local-part should contain only alphanumeric characters and periods (.).
- The local-part cannot start or end with a period, and cannot contain consecutive periods.
Examples of valid emails:
- Must follow the format
https://github.com/USERNAME. - The base URL must be exactly
https://github.com/. - Must be followed by a valid GitHub username.
USERNAME:
- Be 1 to 39 characters long.
- Consist of alphanumeric characters.
- Be separated only by dashes (-), if any.
- Start and end with an alphanumeric character.
- Alternatively, this field can be left blank to remove the GitHub link from a student, using Github Command
Examples of valid GitHub links:
- Must follow the format
https://github.com/USERNAME/REPOSITORY_NAME.
USERNAME:
- Must be 1 to 39 characters long.
- Made up of alphanumeric characters.
- Separated by dashes (-) between segments.
- Cannot start or end with a dash.
REPOSITORY_NAME:
- Made up of alphanumeric characters.
- Can contain dashes (-), underscores (_), and dots (.).
- Cannot be empty.
- Must start and end with an alphanumeric character.
Examples of valid repository links:
- Must be in the format
Txx,RxxorLxx, wherexxis a two-digit number from 01 to 99. - The first letter must be either
TorR(uppercase). - The numeric part must be a valid number between 01 and 99.
- If assigning 'Lxx', a capital letter suffix is optional (e.g. L01A).
- Alternatively, this field can be left blank to remove a class assignment, using Class Command
Examples of valid class numbers:
- T01
- R23
- L99
- L20M
- Must be an integer between 0 and 100, inclusive.
- A trailing percent sign (
%) is allowed but will be ignored during parsing.
Examples of valid progress values:
- 0
- 75
- 100
- 45% (trailing percent sign is accepted)
- Can take any value, but must not be blank.
- The first character must not be a whitespace.
Examples of valid project team values:
- Alpha Squad
- Team42
- dev-x
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 TAssist home folder.
- When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.jsonfile created by the application before running the application again. - If you minimize the Help Window and then run the
helpcommand (or use theHelpmenu, or the keyboard shortcutF1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window. - Users must provide inputs according to the parameters specified in the User Guide. If an invalid or unrecognized parameter is used, TAssist will treat it as an error related to the previous valid parameter.
For example:
assignment n/quiz pr/30 d/22-11-2027
assignment n/quiz ab/xx d/22-11-2027
Both examples will result in an error message related to thenameparameter:
"Name should only contain alphanumeric characters and spaces, and it should not be blank."
This is because pr/30 and ab/xx are not valid parameters for the assignment command.
| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE_NUMBER e/EMAIL s/STUDENT_ID [g/GITHUB_URL] [pt/TEAM] [c/CLASS_NUMBER] [t/TAG]… [pr/PROGRESS] e.g. add n/John Doe p/98765432 e/johnd@eu.nus.edu s/A0000000B g/https://github.com/username c/T02 t/friends t/owesMoney pr/50 |
| Clear | clear |
| Delete | delete INDEX or delete STUDENT_IDe.g., delete 3, delete A1234567B |
| Edit | edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [s/STUDENTID] [g/GITHUB_URL] [pt/TEAM] [c/CLASS_NUMBER] [t/TAG]… [pr/PROGRESS]e.g., edit 2 n/James Lee e/jameslee@u.nus.edu |
| Find | find KEYWORD [MORE_KEYWORDS] or find STUDENT_ID or find CLASS_NUMBER e.g., find James Jake, find A1234567B |
| List | list [f/FILTER_TYPE fv/FILTER_VALUE] [s/SORT_TYPE o/SORT_ORDER]e.g., list f/progress fv/50 s/name o/des |
| Class | class INDEX c/CLASS_NUMBER or class STUDENT_ID c/CLASS_NUMBER e.g., class 1 c/T01, class A7654321B c/T02, class 2 c/L05, class A1234567W c/L15C |
| Progress | progress INDEX pr/PROGRESS or progress STUDENT_ID pr/PROGRESS e.g., progress 1 pr/75, progress A1234567B pr/50 |
| Github | github INDEX g/GITHUB_URL or github STUDENT_ID g/GITHUB_URLe.g., github 2 g/https://github.com/alice, github A1234567B g/https://github.com/alice |
| Repository | repo INDEX un/USERNAME rn/REPOSITORY_NAME or repo INDEX r/REPOSITORY_URL or repo STUDENT_ID un/USERNAME rn/REPOSITORY_NAME or repo STUDENT_ID r/REPOSITORY_URL e.g., repo 2 r/https://github.com/alice/repo, github A1234567B un/barb rn/new |
| Open | open INDEX or open STUDENT_ID e.g., open 3, open A7654321B |
| Assignment | assignment n/NAME d/DATE e.g., assignment n/CS2103T Project d/30-10-2025 |
| View | view |
| Assign | assign STUDENT_INDEX TIMED_EVENT_INDEX or assign STUDENT_ID TIMED_EVENT_INDEX or assign CLASS_NUMBER TIMED_EVENT_INDEX e.g., assign 2 1, assign A1234567B 2,assign T03 2 |
| Unassign | unassign TIMED_EVENT_INDEX e.g., unassign 1 |
| Import | import ABSOLUTE_FILE_PATH e.g., import /Users/Alice/Documents/T01.csv (Unix/mac), import C:\Users\Alice\Documents\T01.csv (Windows) |
| Export | export ABSOLUTE_FILE_PATH e.g., export /Users/Alice/Documents/T01.csv (Unix/mac), export C:\Users\Alice\Documents\T01.csv (Windows) |
| Help | help |











