User Guide
- Introduction
- Quick start
- Graphical User Interface
- Features
- Acknowledgements
- Glossary
Introduction
About this application
Teaching Assistant Assistant (TAA) is a desktop app for managing teaching assistant activities, optimized for use via a Command Line Interface (CLI) while still retaining the benefits of a Graphical User Interface (GUI).
TAA provides a one-stop solution that meets the following teaching needs of a TA in just one single application:
- You can easily track student attendance and grades using just a keyboard, eliminating the need for multiple clicks.
- You can even view grade statistics without the use of a dedicated data analysis application!
- You can schedule alarms that help you manage your time during class. Gone are the days of you unknowingly spending too much time on a single question during tutorial or forgetting to mark students’ attendance at the end of class.
- You can save the troubles of manually importing and exporting data into and out of the TAA application, thanks to our CSV parser!
Say goodbye to the hassle of managing teaching assistant tasks and hello to increased efficiency with TAA!
Objectives of this guide
This guide is written to provide comprehensive instructions for users to use TAA effectively and efficiently. More advanced users can also benefit from this guide by following the additional information provided in each feature.
If you are a teaching assistant who can type fast, this guide is for you!
Using the guide
Navigation
To use the guide, you may wish to take a look at the table of contents at the start of the page. You can click on the relevant sections you wish to visit, and the hyperlink will bring you straight to the relevant section.
Alternatively, you may wish to use the built-in search function in your browser ( + ) to look for specific keywords relevant to your query.
Formatting
Aside from the usual text format, this guide includes certain special formats that are used for different purposes.
Callouts
Callouts are identified by a coloured box containing some text.
Note
Information
Tip
Warning
Syntax highlighting
Text contained within a grey background
are used to denote either of the following:
- commands that can be entered into the command bar
- file names
- command line commands, to be run in the terminal of the host machine
Keys
Keys such as are used to denote keys on the keyboard that can be pressed to perform certain things.
They can also be used to denote keys that should be held together, at the same time. For example,
- indicates that the user can press both the Ctrl and F keys together to perform a given action.
Quick start
-
Ensure you have Java 11 or above installed in your Computer.
-
Download the latest
taa.jar
from here. -
Copy the file to the folder you want to use as the home folder for your TAA.
- Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar taa.jar
command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
Figure 1 : TAA window -
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressing Enter will open the help window.
Some example commands you can try:-
list
: Lists all students. -
add_student n/John Doe cl/T01 cl/L02
: Adds a contact namedJohn Doe
to the Class ListsT01
andL02
. -
delete_student 3
: Deletes the 3rd student shown in the current list. -
exit
: Exits the app.
-
- Refer to the Features below for details of each command.
- Use and to navigate through command history.
Graphical User Interface
The purposes of each component, as labelled in Figure 2 above, are described in Table 1 below.
Component | Purpose |
---|---|
Command Box | To accept commands from the user. |
Output Box | To display the result of the commands issued by the user. |
Class List Display | To display the list of students in the currently active class list. |
Student Card | To display the relevant information for a single Student in the active class list. |
Features
Syntax | Explanation |
---|---|
prefix/ |
Prefixes that are used to separate the parameters supplied by the user. These are usually lower-case and are 1-2 characters long. |
UPPER_CASE |
Parameters to be specified by the user. These parameters are compulsory if they are not wrapped in square brackets. |
[Items in square brackets] |
Optional parameters. The command will work fine if these are not included. |
param... /[param]...
|
More than one of the parameter param is accepted. The first case allows for 1 or more params , while the second case allows for 0 or more params . |
General
These commands are either used to interact with students across all class lists, or just general commands that are not related to any of the sections below:
list
find
clear
help
List all students : list
Lists all students tracked by TAA, across all class lists.
Format: list
Find a particular student : find
Find students across all classes whose names contain any of the specified keywords.
Format: find KEYWORD [MORE_KEYWORDS]...
- The given
KEYWORD
/MORE_KEYWORDS
are not case-sensitive.
Examples:
find Alice Bob Charlie
find bAlAKRiSHNan
bala
does not match the name Roy Balakrishnan
as Bala
is not the full word Balakrishnan
.
Clear all students: clear
Removes all students currently being tracked by TAA.
Format: clear
Display the help menu: help
Displays the help menu.
Format: help
Attendance
For attendance, you can make the following calls:
- markAtd
- unmarkAtd
- listAtd
Mark attendance: markAtd
Marks the attendance of a student for that week
Format: markAtd STUDENT_INDEX w/WEEK_NUMBER
STUDENT_INDEX
: A positive integer that represents the index of student as shown in Class List display portion of TAA
GUI
WEEK_NUMBER
: A integer between 1 and 12 (inclusive of both 1 and 12)
Marking the attendance for a week that is already marked will result in a
message This student's attendance has already been marked.
Examples
-
markAtd 1 w/1
(marks attendance of student with index 1 for week 1) -
markAtd 2 w/1
(marks attendance of student with index 2 for week 1)
Unmark attendance: unmarkAtd
Unmarks the attendance of a student for that week
Format: unmarkAtd STUDENT_INDEX w/WEEK_NUMBER
STUDENT_INDEX
: A positive integer that represents the index of student as shown in Class List display portion of TAA
GUI
WEEK_NUMBER
: A integer between 1 and 12 (inclusive of both 1 and 12)
Unmarking the attendance for a week that is already unmarked will just result in the successful unmarking message being
displayed Attendance unmarked successfully!
Examples
-
unmarkAtd 1 w/1
(unmarks attendance of student with index 1 for week 1) -
unmarkAtd 2 w/1
(unmarks attendance of student with index 2 for week 1)
List Attendance: listAtd
Lists the attendance of a student from week 1 to week 12
Format: listAtd STUDENT_INDEX
STUDENT_INDEX
: A positive integer that represents the index of student as shown in Class List display portion of TAA
GUI
Examples
-
listAtd 1
(list attendance of student with index 1) -
listAtd 2
(list attendance of student with index 2)
The listed attendance will be such that every line will be in the format Week NUM: [PRESENT]
where NUM
represents the week number, and PRESENT
takes the value of X
is the student is present, and empty
otherwise
Example
Week 1: [X]
Week 2: [X]
Week 3: [X]
Week 4: []
Week 5: []
Week 6: []
Week 7: []
Week 8: []
Week 9: []
Week 10: []
Week 11: []
Week 12: []
The above example shows that the student is present for week 1,2,3 and absent for the rest of the weeks
Participation
For participation, you can make the following calls:
- insertPP
- listPP
Clarifications on Participation points
- Participation points is represented by an integer from
0
to700
(inclusive of both0
and700
)
Except for the special situation where the attendance is not marked, then the participation points will be-1
If users are inserting participation points, only an integer from0
to700
(inclusive of both0
and700
) is allowed - When the attendance of a student for a week is marked (not present -> present for the week)
TAA will automatically change the participation points of the student from-1
to0
- Unmarking a student’s attendance automatically changes the participation points of a student to
-1
- The participation points displayed in Class List portion of the TAA GUI is the average points, which is calculated
using
Total participation points
/Number of weeks present
Total participation points
is the sum of all participation points for weeks when the student is present
Number of weeks present
refers to the number of week present from week 1 to week 12
Insert participation points: insertPP
Inserts participation points of a student for that week
Format: insertPP STUDENT_INDEX w/WEEK_NUMBER pp/POINTS
STUDENT_INDEX
: A positive integer that represents the index of student as shown in Class List display portion of TAA
GUI
WEEK_NUMBER
: A integer between 1 and 12 (inclusive of both 1 and 12)
POINTS
: A integer between 0 and 700 (inclusive of both 0 and 700)
Participation points can only be inserted for a week when the attendance is already marked.
Violation of this will result in a message Mark the attendance of the student first before inserting points!
Examples
-
insertPP 1 w/1 pp/200
(inserts participation points of 200 for week 1 of student with index 1) -
insertPP 2 w/1 pp/300
(inserts participation points of 300 for week 1 of student with index 2)
List participation points: listPP
Lists the participation points of a student from week 1 to week 12
Format: listPP STUDENT_INDEX
STUDENT_INDEX
: A positive integer that represents the index of student as shown in Class List display portion of TAA
GUI
Examples
-
listAtd 1
(list participation points of student with index 1) -
listAtd 2
(list participation points of student with index 2)
The listed participation points will be such that every line will be in the format Week NUM: [POINTS]
where NUM
represents the week number, and POINTS
is the participation points for that week
Example
Week 1: [200]
Week 2: [300]
Week 3: [400]
Week 4: [-1]
Week 5: [-1]
Week 6: [-1]
Week 7: [-1]
Week 8: [-1]
Week 9: [-1]
Week 10: [-1]
Week 11: [-1]
Week 12: [-1]
The above example shows that the student have a participation point of 200 for week 1, 300 for week 2, 400 for week 3, and -1 for the rest of the weeks (attendance is not marked)
Assignments & Submissions
Preface
Assignment: A school assignment. Has an alphanumeric name, a non-negative integer total marks, and student submissions associated with it.
Submission: Linked to an assignment. Each student has a submission for every existing assignment.
For assignments & submissions, you can make the following calls:
- add_asgn
- delete_asgn
- grade
- ungrade
- list_asgn
Add Assignment: add_asgn
Adds an assignment with a specified name and total marks.
If the total marks for the assignment is unspecified, a default value of 100 will be given.
Submission records for that assignment will be immediately created for all existing students. All these submissions will be initially ungraded.
Format: add_asgn n/ASSIGNMENT_NAME [m/TOTAL_MARKS]
Example:
add_asgn n/Lab 1
add_asgn n/Lab 2 m/50
Delete Assignment: delete_asgn
Deletes the assignment of assignment_name you provided, along with the student submissions for that assignment.
Format: delete n/ASSIGNMENT_NAME
Example:
delete_asgn n/Lab 1
Grade Assignment: grade
Grades the student submission of assignment_name and student_id with the provided marks.
You can also indicate whether a student submission is late by adding “late/” at the end.
A submission can be graded multiple times, even if it is already graded. In that case, the latest grade will be taken.
Format: grade n/ASSIGNMENT_NAME i/STUDENT_ID m/MARKS [late/]
Example:
grade n/Lab 1 i/2 m/20
grade n/Lab 1 i/3 m/30 late/
Ungrade Assignment: ungrade
Resets the grade of the submission of assignment_name and student_id. It will also reset the late submission status of the submission, if the submission was marked as late.
A submission can be ungraded multiple times, even if it is already ungraded. In that case, the subsequent ungrades will have no effect.
Format: ungrade n/ASSIGNMENT_ID i/STUDENT_ID
Example:
ungrade n/Lab 1 i/2
List all assignments: list_asgn
Lists all assignments, submissions and their respective information.
Format: list_asgn
Example Output:
-
Assignment Lab 1:
` [X] Alice: 50/100 marks.<br>
[ ] Bob: 0/100 marks.`
-
Assignment Lab 2:
` [ ] Alice: 0/100 marks.<br>
[X] Bob: 77/100 marks. (Late Submission)`
The example output above shows that there are 2 assignments: Lab 1 & Lab 2.
Alice has a graded submission for Lab 1, and Bob has a graded late submission for Lab 2.
Class List
The class list is list of the students enrolled in a class. For class lists, you can call the following commands:
- Create class list:
create_class
- View class statistics:
class_stats
- Adding a student:
add
- Deleting a student:
delete
- Listing all students in a class:
classlist
- List all students:
list
- Find student:
find
Create a class list: create_class
Creates a class list to store the information about a group of students.
Format: create_class LIST_NAME
- The argument
LIST_NAME
should be the name of the new class list.
Examples:
-
create_class cs6244
creates an empty class list.
List students in a class list: classlist
List the students in a particular class list.
Format: create_class LIST_NAME
- The argument
LIST_NAME
should be the name of the class list which you want to see the students inside.
Examples:
-
classlist cs6244
list the students in class cs6244.
List all students in the application: list
List all students.
Format: list
Examples:
-
list
list all students in the application.
Add a student: add_student
Adds a student to a given class list.
Format: add_student n/STUDENT_NAME cl/CLASS_NAME...
- The argument
STUDENT_NAME
should be the name of the student to be added. It only accepts alphanumeric inputs and spaces. - The argument
CLASS_NAME
should be the name of a given class the student belongs to
Examples:
-
add_student n/Tom cl/cs2103t-t14
adds Tom to the class CS2103T-T14 -
add_student n/Harry cl/cs6244
adds Harry to the class CS6244
CLASS_NAME
does not exist, it will automatically be created with student
STUDENT_NAME
as its first student
cl/
prefixes in your command. e.g. add n/Harry cl/cs6244 cl/cs1231s
STUDENT_NAME
accepts alphanumeric inputs, student numbers such as A1234567X
are perfectly valid student names!
Edit a student: edit_student
Edits a student in the active class list.
Format: edit_student STUDENT_INDEX [n/STUDENT_NAME] [cl/CLASS_NAME]
- The
STUDENT_INDEX
is the index of the student that is currently being shown on screen. - At least one of the optional fields must be present. (i.e. either
STUDENT_NAME
and/orCLASS_NAME
)
Examples:
-
edit_student 3 n/Barry Allen
changes the name of the 3rd student to “Barry Allen” -
edit_student 5 cl/Tutorial_T14
assigns the 5th student only to the class “Tutorial_14” -
edit_student 12 n/Tom Hanks cl/Lab_L11
changes the name of the 12th student to “Tom Hanks”, and assigns him to the class “Lab_L11”
Delete a student: delete_student
Deletes a student from the active class list.
Format: delete_student STUDENT_INDEX
- The
STUDENT_INDEX
is the index of the student that is currently being shown on screen.
Examples:
-
delete_student 3
removes the 3rd student in the currently active/displayed class list
list
command.
View class statistics: class_stats
Displays statistics for the class, based on the specified field.
Format: class_stats st/FIELD [as/ASSIGNMENT_NAME]
- The argument
FIELD
must only be one ofattendance
/grades
- If
attendance
is entered as theFIELD
parameter, thenASSIGNMENT_NAME
is not required and will be ignored. - If
grades
is entered as theFIELD
parameter, thenASSIGNMENT_NAME
is required.
Examples:
-
class_stats st/attendance
– see Figure 4 below -
class_stats st/grades as/Test 2
– see Figure 5 below
ASSIGNMENT_NAME
must have at least 2 graded submissions, and the submission grades must contain some variance. (i.e. if all the submissions are graded with the exact same marks, then no curve will be drawn as a normal distribution cannot be modelled with 0 variance.)
FIELD
parameter is case-insensitive!
i.e. atTenDanCE
, while unusual, is still a valid argument to FIELD
.
Alarm
For Alarm, you can call the following commands:
- Schedule an alarm:
add_alarm
- Remove a scheduled alarm:
delete_alarm
- List all scheduled alarms:
list_alarms
Schedule an alarm : add_alarm
Add an alarm to the current application.
Format: add_alarm t/TIME c/COMMENT
- The TIME field must be numbers representing minutes
- The COMMENT field contains content of the alarm
Examples:
- add_alarm t/5 c/finish question one
- The above command adds an alarm that rings in 5 minutes, with comment “finish question 1”
Remove a scheduled alarm : delete_alarm
Delete a scheduled alarm from the current alarm list. It will not ring on the scheduled time after deletion.
Format: delete_alarm INDEX
- the INDEX is the number assigned to the alarm in the alarm list when we call the list_alarms command
Examples:
- delete_alarm 1
List all scheduled alarms : list_alarms
List all alarms scheduled, arranged in the order of creation, containing time left and comment of each alarm.
Examples:
- list_alarms
CSV Parser
Stores and loads student data in with CSV files.
- Import data in CSV format:
import
- Export data in CSV format:
export
Our CSV files follow the following format:
- All our CSV files are header-less.
- The student data must have exactly 5 columns separated by colons in order:
- Name: Non-blank alphanumeric words. Two students cannot have the same name.
- (Optional) Attendance: Exactly 12 numbers separated by semicolons. Each number is either 0 (absent) or 1 (attended).
- If unspecified, the default value is all absent.
- (Optional) Participation point: exactly 12 numbers separated by semicolons. Each number is either -1 (unmarked) or an
integer between 0-700 (inclusive).
- If unspecified, the default value is all unmarked.
- (Optional) Submission: submission entries separated by semicolons.
- Each submission entry has exactly 4 fields separated by colons in order:
- Assignment name: must exist in the assignment list upon import. No student can have multiple submissions of same assignment name.
- Graded: either 0 (ungraded) or 1 (graded).
- Late: either 0 (on time) or 1 (late).
- Mark: integer between 0 and the total marks of the assignment.
- If a student made no submission to an assignment, TAA creates a submission record that is ungraded, on time, and marked 0 for this assignment for this student.
- Each submission entry has exactly 4 fields separated by colons in order:
- (Optional) Class: Non-blank alphanumeric words separated by semicolons.
- Optional fields still requires a colon to be represented in the CSV file because “if a column is defined as optional, it means that the column is required to exist, but the value can be blank.”
Acceptable CSV format example: (suppose assignment x, y, and z is already added to the assignment list)
Technoblade,1;0;0;1;1;1;0;1;0;0;0;0,-1;0;-1;2;-1;-1;-1;-1;200;-1;-1;-1,"x,0,0,1;y,0,0,2;z,0,0,3;",Tut1;Tut2;
Dream Was Taken, 1 ;0;0 ; 1;1;1; 0;1 ;0;0;0;0,-1;0; -1;2;-1;-1;-1 ;-1;200;-1;-1;-1," x ,0, 0,2;y,1 ,0,100 ; z,0 , 0,0 ; ", Tut2 ;Tut3;
Tommy In It,,-1;0;-1;2;-1;-1;-1;-1;2;-1;-1;-1,"x,1,0,15;z,1,1,180;",Lab
Wilbur Soot,1;0;0;1;1;1;0;1;0;0;0;0, ,"y,0,0,0", ;Tut2;
Ph1LzA,,,,
Excel spreadsheet format that exports acceptable CSV files: (please ignore the first empty row)
Technoblade | 1;0;0;1;1;1;0;1;0;0;0;0 | -1;0;-1;2;-1;-1;-1;-1;200;-1;-1;-1 | x,0,0,1;y,0,0,2;z,0,0,3; | Tut1;Tut2; |
Dream Was Taken | 1 ;0;0 ; 1;1;1; 0;1 ;0;0;0;0 | -1;0; -1;2;-1;-1;-1 ;-1;200;-1;-1;-1 | x ,0, 0,2;y,1 ,0,100 ; z,0 , 0,0 ; | Tut2 ;Tut3; |
Tommy In It | -1;0;-1;2;-1;-1;-1;-1;2;-1;-1;-1 | x,1,0,15;z,1,1,180; | Lab | |
Wilbur Soot | 1;0;0;1;1;1;0;1;0;0;0;0 | y,0,0,0 | ;Tut2; | |
Ph1LzA |
Import data in CSV format: import
Import data in CSV format from file.
Format: import [-force] FILE_PATH
- Option -force overwrites records of existing students.
- Nothing is changed to TAA if data reading meets any error.
Successful import of a file containing the example data should display this:
Export data in CSV format: export
Export data in CSV format to file.
Format: export [-force] FILE_PATH
- If file exists, export is blocked unless -force flag is used. Otherwise, create file and export.
- Option -force overwrites existing file.
- Nothing is saved to disk if file access denied.
Acknowledgements
- Libraries used: JavaFX, Jackson, JUnit5, JFreeChart
- This project is based on the AddressBook-Level3 project created by the SE-EDU initiative.
Glossary
Term | Explanation |
---|---|
Desktop App | A software program that runs on a computer’s desktop or laptop operating system, rather than through a web browser. |
Command Line Interface | A way of interacting with a computer program by typing in text commands instead of using a graphical user interface (GUI) with buttons and menus. |
Graphical User Interface | A type of user interface that allows users to interact with a computer program using graphical elements such as buttons, menus, and icons instead of typing in commands. |
Terminal | Text-based interface used to interact with the computer’s operating system. For Windows, it is usually called the Command Prompt. |
Host Machine | The computer that is used to run the software/program in question. |
Parameter | A value that is passed in by the user. This value changes depending on what the user decides to enter. |
Student | A person recorded in our app. Has an alphanumeric name and may have class list tags associated to it. |
Assignment | A school assignment. Has an alphanumeric name, a non-negative integer total marks, and student submissions associated with it. |
Submission | Linked to an assignment. Each student has a submission for every existing assignment. |