User Guide

CohortConnect v1.4
Type. Explore. Connect.CohortConnect is an advanced desktop address book which facilitates networking among Computer Science (CS) students. It is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
With advanced features for managing large groups of contacts, CohortConnect is intended for use in a university setting. At the start of the semester, professors will distribute CSV or JSON files containing a list of students. Instantly load them into CohortConnect with a single Import command. With data collected from students before the semester, our Find A Buddy feature helps you find potential groupmates by leveraging GitHub’s metadata using a proprietary algorithm. In the Events tab, you can identify events and hackathons that your peers will be attending.
Table of Contents
- Table of Contents
- Purpose
- Prerequisites
- Quick Start
- User Interface
- Keyboard Mappings
-
Features
- Adding a new Student -
add - Delete a Student -
delete - Edit a Student -
edit - Edit your Profile -
edit profile - Find a Student -
find - Find A Buddy Tab
- Show a Student Contact -
show - Exporting Student Contacts -
export - Importing Student Contacts -
import - Setting a Contact as Favorite -
fav - Setting a Contact as Unfavorite -
unfav - Adding or removing tags from a contact -
tag - Displaying the Help Window -
help - Listing All Student Contacts -
list - Deleting All Student Contacts -
clear - Open Telegram of Current Contact
- Open GitHub of Current Contact
- Retrieve Command History - ↑ / ↓
- Exiting the App -
exit
- Adding a new Student -
- FAQ
- Command Summary
Purpose
This User Guide is intended for basic to advanced users of CohortConnect. It provides sufficient information for users to set up the application and learn all its features.
Prerequisites
- Basic knowledge about
CSVandJSONtype file formats. - Basic knowledge about Technical Terms like
CLI,UIandJAR. -
Java 11Installed on the System.
Quick Start
- Ensure you have Java 11 or above installed in your computer.
- Download the latest
CohortConnect.jarrelease from here. - Place
CohortConnect.jarin an empty folder. - Double-click the jar file to start the program.
- The UI would look like this:
- Welcome Splash Screen
- This Window is only displayed once, when the Student launches the App for the first time.
- Enter Your Name in the
Name Field.- Enter Your VALID Telegram Handle in the
Telegram Field.- Enter Your VALID GitHub Username in the
GitHub Field.
1. Telegram Handle Conventions:
• Can only contain the letters a-z or A-Z, digits 0-9 and underscores.
• Is case-insensitive.
• Must be 5 to 32 characters long.
2. GitHub Username Conventions:
• Can only contain alphanumeric characters or hyphens.
• Cannot have multiple consecutive hyphens.
• Cannot begin or end with a hyphen.
• Can have a maximum of 39 characters.
- Main Window.
User Interface

- Menu Bar: Contains links and keyboard shortcuts for navigating to other UI components.
- Profile Window: Opens the Profile Window, where you can see your profile details entered during set up.
- Events Icon: Switches to the Events tab.
- Command Box: A text field to enter their commands and view previous commands command-line style.
- Result Box: Displays the results of commands entered into the Command Box.
- Tab Switcher: Shows all tabs, highlights the current tab, and switches between tabs by clicking or keyboard shortcuts.
- Contact List: Shows all contacts in a scrollable list.
- Contact Details: Shows all details of the currently selected contact.
Keyboard Mappings
- ⌘ + 1: To Switch to Contacts Tab.
- ⌘ + 2: To Switch to Favorites Tab.
- ⌘ + 3: To Switch to Events Tab.
- ⌘ + 4: To Switch to Find a Buddy Tab.
- ⌘ + P: To Launch the Profile Window.
- ↑: To Retrieve the Last Entered Command (Similar to Terminal).
- ↓: To Retrieve the Next Entered Command (Similar to Terminal).
- F1: To Launch the Help Window.
Features
Notes about command format:
-
[x/xxx]refers to an optional field
Adding a new Student - add
Adds a Student to the Address Book.
Format:
add n/<NAME> te/<TELEGRAM> g/<GITHUB> [p/<PHONE_NUMBER>] [e/<EMAIL>] [a/<ADDRESS>]
[t/<TAG>]
Example:
add n/John Doe te/johndoe g/john-doe p/98765432 e/johnd@eg.com
a/John Street, Blk 12, #01-01
Delete a Student - delete
Deletes the specified Student Contact from the Address Book.
Format:
delete <INDEX>
Example:
delete 7
Edit a Student - edit
Edits an existing Student Contact in the Address Book.
Format:
edit <INDEX> [n/<NAME>] [te/<TELEGRAM>] [g/<GITHUB>] [p/<PHONE>] [e/<EMAIL>]
[a/<ADDRESS>] [t/<TAG>]
Example:
edit 1 n/John te/john_123 t/TA
Edit your Profile - edit profile
Edits the Profile linked to the Address Book.
Format:
edit profile [n/<NAME>] [te/<TELEGRAM>] [g/<GITHUB>]
1. Name Conventions:
• Should only contain alphabetical characters.
2. Telegram Handle Conventions:
• Can contain the letters a-z or A-Z, digits 0-9 and underscores.
• Must be 5 to 32 characters long.
3. GitHub Username Conventions:
• May only contain alphanumeric characters or hyphens.
• Cannot have multiple consecutive hyphens.
• Cannot begin or end with a hyphen.
• Can have a maximum of 39 characters.
- Edits the name, Telegram and GitHub fields of your profile.
- If the prefix of the field to be edited is mentioned, then its parameters cannot be left empty.
E.g.
edit profile te/andedit profile n/Bob te/would result in an error because the updated Telegram handle has not been specified. - If multiple prefixes are missing parameters, CohortConnect will notify you of the first missing parameter.
E.g.
edit profile n/ te/would result in an error saying that the name to be edited is missing.
Examples:
edit profile te/bob_osumedit profile n/Bob g/bob-codesedit profile n/Alex te/alex_1 g/alex123
Find a Student - find
Finds students contacts whose names, Telegram handles, GitHub usernames or assigned tags contain any of the given keywords.
Format 1:
find <NAME> [MORE_NAMES]
- Searches for matching names
- Matches contact names with the exact keyword or those that contain the keyword as substring. e.g.
find alwill return Alex Yeoh as well as Roy Balakrishnan - The search is case-insensitive. e.g. alex will match Alex
- Persons matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang
Examples:
- Search by single name:
find alex - Search by multiple names:
find ai bob dom
Format 2:
find <TAG> [MORE_TAGS]
- Searches for contacts with matching tags.
- Matches students with the exact tag name. e.g.
find t/friendwill only display student contacts with the tagfriendand notfriends. - The search is case-insensitive. e.g.
find t/Friendswill match contacts with the tagfriendstoo.
Examples:
- Search by single tag:
find t/classmates - Search by multiple tags:
find t/friends neighbours
Format 3:
find te/<TELEGRAM_HANDLE> [MORE_TELEGRAM_HANDLES]
- Searches for a student contact by telegram handle.
- Matches student contacts with the exact Telegram handle or Telegram handle that contain the keyword as a substring. e.g.
find te/Alwill display student contacts with the Telegram handlesal_x1andrandall_xo. - The search is case-insensitive. e.g.
find te/Alwill find the contact with the Telegram handlealextoo.
Examples:
- Search by single Telegram handle:
find te/dY - Search by multiple Telegram handles:
find te/bob al_x1
Format 4:
find g/GITHUB_USERNAME [MORE_GITHUB_USERNAMES]
- Searches for a student contact by GitHub username.
- Matches student contacts with the exact GitHub username or GitHub username that contain the keyword as a substring. e.g.
find g/aiwill display student contacts with the GitHub usernamesai-coderandkaira1208. - The search is case-insensitive. e.g.
find g/Alwill find the contact with the GitHub usernameAlex.
Examples:
- Search by single GitHub username:
find g/dY - Search by multiple GitHub usernames:
find g/ai-coder kaira1208
Find A Buddy Tab
The Find a Buddy feature can be accessed by just switching to the last tab. The tab will display the top 5 matches to your profile based on gathered GitHub data.
Working
The GitHub data used includes the percentage of contributions for different languages in the top 30 repositories, and the number of repos in the user’s profile.
A similarity score is calculated using these features. The similarity score is based on the following three metrics:
- Euclidean Distance
- Manhattan Distance
- Cosine Similarity
On clicking a student, you can view the similarity score and the languages you have in common with the selected student.
Show a Student Contact - show
Shows detailed information of a Student Contact. This can be done using the name of the contact, GitHub username, telegram id or the index. It shows the student with the corresponding detail containing the keyword.
Format 1:
show <NAME>
Example 1:
show John Doe
Format 2:
show g/<GITHUB_USERNAME>
Example 2:
show g/john-doe
Format 3:
show te/<TELEGRAM_ID>
Example 3:
show te/john_doe
Format 4:
show <INDEX>
Example 4:
show 4
Exporting Student Contacts - export
You can export your entire address book to a specified JSON or CSV file. This can be used to share contacts with others, or to store contacts in an external format.
CSV files can be opened and edited with Excel.
The exported file will be in the same folder as the application. Exporting will not overwrite existing files.
Format 1:
export <FILENAME>.json
Example 1:
export Friends.json
Format 2:
export <FILENAME>.csv
Example 2:
export Friends.csv
Importing Student Contacts - import
You can import contacts from a specified JSON or CSV file, saving you the hassle of adding contacts individually. This can be used to load the module contacts provided at the start of the semester, or any other contacts shared with you.
CSV files can be opened and edited with Excel.
The import file must be in the same folder as the application. Importing will not remove existing contacts, and ignores duplicate contacts.
Format 1:
import <FILENAME>.json
Example 1:
import CS2103T.json
Format 2:
import <FILENAME>.csv
Example 2:
import CS2103T.csv
Setting a Contact as Favorite - fav
Sets a particular Student Contact as a Favorite, only if the contact has not been favorited.
Format:
fav <INDEX>
Example:
fav 1
Setting a Contact as Unfavorite - unfav
Sets a particular Student Contact as an Unfavorite, only if the contact has been favorited.
Format:
unfav <INDEX>
Example:
unfav 1
Adding or removing tags from a contact - tag
Directly adds or removes tag(s) from a specific student contact.
Format:
tag <INDEX> a/<TAG_TO_ADD> [MORE_TAGS] r/<TAG_TO_REMOVE> [MORE_TAGS]
• Index cannot be left blank, must be a positive integer and be specified after the
tag keyword.• To add or remove an event or module type tag, specify the tag type before the name of the tag. E.g.
tag 2 a/event-hackathon (to add an event tag) or tag 2 a/module-CS2103T (to add a module tag) and likewise for remove. Tags specified without valid type before the name will be considered as general tags.• You can choose to only add tag(s), only remove tag(s) or add tag(s) and remove tag(s)
- Adding tags :
- If
a/is entered, it must be followed by the name(s) of tag(s) to be added. E.g.tag 1 a/ r/friendswould result in an error even if only thefriendstag was to be removed. - Duplicate tags aren’t allowed. E.g.
tag 1 a/teammatewould result in an error if the student contact at index 1 already has the tagteammate. - If multiple tags are to be added and there is at least 1 tag that is not already assigned to the specific contact,
then this tag is added and the remaining duplicate tags are ignored. E.g. if
tag 1 a/classmate a/ccawould result in only theclassmatetag being added to the student contact at index 1 if it already has the tagcca.
- If
- Removing tags :
- If
r/is entered, it must be followed by the name(s) of tag(s) to be removed. E.g.tag 1 a/friends r/would result in an error even if only thefriendstag was to be added. - Attempting to remove a tag that is not assigned to the specified contact is not allowed. E.g.
tag 1 r/teammatewould result in an error if the student contact at index 1 is not assigned the tagteammate. - If multiple tags are to be removed and there is at least 1 valid tag that can be removed from the specific contact,
then this tag is removed and the remaining invalid tags are ignored. E.g. if
tag 1 r/classmate r/ccawould result in only theclassmatetag being removed from the student contact at index 1 if the tagccais not assigned to them already.
- If
Examples:
- Adding single (general) tag :
tag 1 a/friends - Adding single (event) tag :
tag 2 a/event-hackathon - Adding multiple tags :
tag 3 a/friends a/teammate - Removing multiple (general) tags :
tag 2 r/family r/owesmoney - Removing multiple (module) tags :
tag 2 r/module-CS1101S module-MA1521 - Adding and removing a tag :
tag 4 a/friends r/colleagues
Displaying the Help Window - help
Displays the Help Window, which consists of a list of possible Commands, and a link to this UserGuide.
When the Visit URL button is clicked, the UserGuide is opened in the system’s default web browser.
Format:
help
Listing All Student Contacts - list
Lists all the student contacts in the address book.
Format:
list
Deleting All Student Contacts - clear
Deletes all the student contacts present in the address book.
Format:
clear
Open Telegram of Current Contact
Opens the current contact’s Telegram link in your default web browser. If you have Telegram installed on your device, you will be redirected to the application.
show <INDEX> or show <NAME>.
Format:
te
Open GitHub of Current Contact
Opens the current contact’s GitHub profile in your default web browser.
Format:
g
Retrieve Command History - ↑ / ↓
Similar to a Command Line Interface, ↑ retrieves the previous command, while ↓ retrieves the next command.
Exiting the App - exit
Exits the App.
Format:
exit
FAQ
Q: On typing and running commands, the error message “XXXX” is shown, what should I do?
A: Please strictly follow the command format to avoid such issues.
Command Summary
| Feature | Command(s) |
|---|---|
| Add a new Student | add n/<NAME> te/<TELEGRAM> g/<GITHUB> [p/<PHONE>] [e/<EMAIL>] [a/<ADDRESS>] [t/<TAG>] |
| Delete All Student Contacts Present | clear |
| Delete a Student | delete <INDEX> |
| Exit the App | exit |
| Edit a Student | edit <INDEX> [n/<NAME>] [te/<TELEGRAM>] [g/<GITHUB>] [p/<PHONE>] [e/<EMAIL>] [a/<ADDRESS>] [t/<TAG>] |
| Edit your Profile | edit profile [n/<NAME>] [te/<TELEGRAM>] [g/<GITHUB>] |
| Exporting Student Contacts |
export <FILENAME>.json export <FILENAME>.csv
|
| Favorite a Student Contact | fav <INDEX> |
| Find a Student (by Name) | find <STRING> |
| Find a Student (by Tag) | find t/<TAG> |
| Find a Student (by Telegram Handle) | find te/<TELEGRAM> |
| Import Student Contacts |
import <FILENAME>.json import <FILENAME>.csv
|
| List all the Student Contacts Present | list |
| Open Current Student’s GitHub Profile in the Web Browser | g |
| Open Current Student’s Telegram Link in the Web Browser | te |
| Show the Help Window | help |
| Show a Student Contact (by Name) | show <NAME> |
| Show a Student Contact (by Index) | show <INDEX> |
| Show a Student Contact (by Github) | show g/<GITHUB> |
| Show a Student Contact (by Telegram) | show te/<TELEGRAM> |
| To Add Tag(s) | tag <INDEX> a/<TAG_TO_ADD> [MORE_TAGS] |
| To Remove Tag(s) | tag <INDEX> r/<TAG_TO_REMOVE> [MORE_TAGS] |
| To Add and Remove Tag(s) Simultaneously | tag <INDEX> a/<TAG_TO_ADD> [MORE_TAGS] r/<TAG_TO_REMOVE> [MORE_TAGS] |
| Unfavorite a Student Contact | unfav <INDEX> |