User Guide
CLIMods
is a native desktop application for NUS students to explore, manage and plan academic
modules that they are interested in taking. It is primarily optimised for the use via a Command Line
Interface (CLI) while still providing the benefits of a Graphical User Interface (GUI). Power users
of the command line/terminal will be able to plan and manage their modules much faster than doing it
on nusmods.com.
Developed with love by: Linus, Cheng Yi, Yi Hong, Huzaifa, Hong Jin
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
climods.jar
from here. -
Copy the file to the folder you want to use as the home folder for your
CLIMods
. - Double-click the file to start the app. The GUI similar to the below should appear in a few
seconds.
If double-clicking fails to start the app try these steps instead:- Launch a terminal or command prompt on your system
- Change the current working directory to the home folder
- Run the following command:
java -jar climods.jar
-
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. - Refer to the Features below for details of each command.
If no academic year is specified in
preferences.json
, the current academic year (e.g. 2022-2023) will be used.
Features syntax
Notes about the command format:
- Words in
lowercase
are commands. - Words in
UPPPERCASE
are compulsory arguments. - Words in
[square brackets]
are optional arguments. - Words in
<triangle brackets>
are keyboard strokes.
Features
User Manual: help
Format: help
Provides the user manual for all supported commands.
Listing modules: ls
Format: ls [FACULTY-PREFIX]
Optional Arguments:
-
FACULTY-PREFIX
- e.g.
CS
,CEG
- e.g.
Shows the entire list of modules offered by NUS with the option to also filter it by faculty (via module prefix e.g. CS, CEG).
Searching for modules: find
Format: find KEYWORD
Required Arguments:
-
KEYWORD
- Any keyword to search against the list of modules
- A keyword must be a regex expression
- e.g.
^CS20\d0$
orCS2103
- Refer to the FAQ section to learn more about regex!
- e.g.
Search for a (list of) module in the entire list of modules offered by NUS.
Regex is difficult, and is intended to be used by more experienced users. This function works fine even without using regex in the query!
Click here to check that your regex statement is compatible with Java 8
View module details: view
Format: view MODULE-CODE
Required Arguments:
-
MODULE-CODE
- e.g.
CS2103
- e.g.
View full details (e.g. description, module credits and lesson slots) of a module via its module code.
Listing module prerequisite: preq
Format: preq MODULE-CODE
Required Arguments:
-
MODULE-CODE
- e.g.
CS2103
- e.g.
Show the list of modules that are the given module’s prerequisites.
Preclusions to prerequisite mods will not be shown due to a limitation with the NUSMods API. (E.g. Only CS1010 will be shown for preq cs2040
)
Note: preq
is not always able to show prerequisites for all modules due to limitations of the NUSMods API.
- Some modules may list a prerequisite module code that is no longer offered in the current academic year. Such
modules will not be shown in the list of prerequisites after running
preq
. - Some modules have a prerequisite description but the NUSMods API is unable to provide prerequisite module codes
(e.g
LLJ5479
). - The
preq
command does not show and/or relationships between prerequisite modules.
Add modules to user list: add
Format: add MODULE-CODE SEMESTER-CODE
Required Arguments:
-
MODULE-CODE
- e.g.
CS2103
- e.g.
-
SEMESTER-CODE
-
s1
, Semester 1 -
s2
, Semester 2 -
st1
, Special Term 1 -
st2
, Special Term 2
-
Add a module to the user’s own list of modules.
Your added module will display your lesson timings!
Delete a module from user list: rm
Format: rm MODULE-CODE
Required Arguments:
-
MODULE-CODE
- e.g.
CS2103
- e.g.
Delete a module to the user’s own list of modules.
Pick module lessons: pick
Format: pick MODULE-CODE LESSON-TYPE LESSON-ID
Required Arguments:
-
MODULE-CODE
- e.g.
CS2103
- e.g.
-
LESSON-TYPE
-
TUT
: Tutorial -
LAB
: Lab -
REC
: Recitations -
SEC
: Sectional Teaching -
LEC
: Lecture -
OTHERS
: OthersMore lesson types coming soon 😃
-
-
LESSON-ID
- e.g.
08J
Tip: Use the
view
command to look at the available lessons!
- e.g.
Pick lesson (e.g tutorial, lab) slots from the available choices for modules that have been selected by the user.
Your list of modules will display your lesson timings!
Exiting the program: exit
Format: exit
Exits the program
Previous/Next command: <Up>/<Down>
Using the <Up>
and <Down>
arrow keys, users can traverse through the command history.
Traverse/Scroll up: <Up>
Traverse/Scroll down: <Down>
Do note that the implementation of the command history will not keep track of consecutive duplicate commands. This is to prevent clutter in the command history. Therefore, a command sequence like
ls CS
followed by anotherls CS
will only have one record in the command history.
Command summary
Action | Format, Examples |
---|---|
help |
help e.g. help
|
ls |
ls [FACULTY-PREFIX] e.g. ls , ls CS
|
find |
find KEYWORD e.g. find compilers
|
view |
view MODULE-CODE e.g. view CS2103
|
preq |
preq MODULE-CODE e.g. preq CS2103
|
add |
add MODULE-CODE e.g. add CS2103 s1
|
rm |
rm MODULE-CODE e.g. rm CS2103
|
pick |
pick MODULE-CODE LESSON-TYPE LESSON-ID e.g. pick CS2103 TUT 06
|
exit | exit |
FAQs
-
What is a
regex
expression?It stands for
regular expression
and is a sequence of characters that specifies a search pattern in text. To learn more about regex, you can refer to this tutorial. -
Why can’t I visit external links?
You are likely coming from our application via the
help
command. It is intended for the user to only view our website (including the user guide) via the command. If you wish to visit any external links, you can copy the link and paste it into your favourite browser! -
Can I update the json file?
No! Do not edit the json files on your own! Instead, you should use the command line interface provided by CLIMods. We do not take any responsibility for any unexpected behaviour if you insist on editing the json files.
If the file is corrupted, please manually delete the file from the directory. Automatic deletion of files is not a feature due to security concerns (e.g. malicious hackers can set the file preference to local files that are not json compatible. Enabling auto-deletion of corrupted files will enable hackers to delete these files.)
-
Why is the application not displaying any modules?
CLIMods requires internet access because we fetch module data from NUSMods API. Please ensure that you have internet access before launching CLIMods.
-
How should I specify the academic year?
An academic year is specified in the
YYYY-YYYY
format. Note that specifying identical years (2022-2022
) will be treated as an invalid academic year.Since,
CLIMods
relies on thenusmods
API for module data, do note that legacy module data may not be available. For example, sincenusmods
no longer provide module data before2018
, specifying2017-2018
or any previous academic years will be treated as an invalid academic year.Tip
- Valid ✅ academic year examples:2022-2023
,2018-2019
- Invalid ❌ academic year examples:2022-2022
,2023-2022
,22-23