Vanessa Kang - Project Portfolio Page
Project: PlanNUS
PlanNUS is a greenfield, CLI-based project which aims to solve the gap in undergraduate academic planning in NUS. PlanNUS removes the need for Excel sheets and CAP calculator websites by bundling their functionalities, and more, into two key apps: the Academic Planner and CAP Calculator.
The Academic Planner assists students in planning out their academic calendar for the entire duration (4-5 years) of their NUS candidature. It provides students with a convenient interface to keep track of the modules that they have taken, or are planning to take, along with the associated semester and grade information.
The CAP Calculator then makes use of this existing data to calculate students’ current CAP. This helps students to accurately monitor, and even forecast, their academic performance.
Given below are my contributions to the project.
- Code contributed: RepoSense Link
- New Feature: Added the ability to view all modules in the user’s academic calendar.
- What it does: Allows users to view all the modules - together with their associated grades, and sorted by semester - that are currently in their academic calendar.
- Justification: This feature gives users a clear overview of all the modules that they have taken (or plan to take), which will aid users greatly when planning their academic journey.
-
New Feature: Added the ability to view the details of a specific module.
-
What it does: Allows users to view detailed information about a specific module, such as semesters offered, prerequisites, and preclusions.
-
Justification: Users who need to quickly look up crucial information about specific modules can do so within PlanNUS itself, eliminating the need to toggle between PlanNUS and an external search window.
-
Highlights: While formatting the module information for printing, two things needed to be taken into consideration:
- What information do students actually find useful? And
- How to lay out these details in a clear, unambiguous manner?
Otherwise, this feature would potentially cause students even more confused than before.
-
- New Feature: Added the ability to search for modules that contain a specific keyword.
- What it does: Allows users to input a keyword, then searches the module database for modules that contain this keyword. Currently, it only searches based on module code, and displays only the first 10 results.
- Justification: If users are unsure of the full code of a certain module, this feature would be a handy tool to jog their memory.
- Documentation:
- User Guide:
- Developer Guide:
-
Team-based tasks:
-
Review contributions:
- PRs reviewed (with non-trivial review comments):
- iP: #15, #154
- tP: #26, #68, PE dry run
- PRs reviewed (with non-trivial review comments):
-
Contributions to the User Guide (Extracts):
6.1.4. Viewing the details of a module:
details
This command is for you to view the detailed information of a particular module.
Input format:
details <module code>
Example of usage:
details CS2101
DETAILS cs2113t
As shown in the image, you can input the module that they wish to view further details about.
Caution:
- No information will be printed if the module is not offered by NUS.
6.1.5. Searching for module codes containing a keyword:
search
This command is for when you are unsure of the full module code.
Input format:
search <module code key>
Example of usage:
search CS21
SEARCH cg4002
As shown above, you can enter a search key that contains either part of, or the whole module code.
Caution:
- This feature currently only supports searching by module code.
- Only up to the first 10 results are displayed.
-
Contributions to the Developer Guide (Extracts):
4.4. Academic Calendar Planner: View Module Details Feature
4.4.1. Current implementation
View module details command is executed by
AcademicPlannerParser
. It allows the user to view the full details of any module offered by NUS, by accessing the specifiedFullModule
object that corresponds to the module code entered by the user, and printing its attributes.Additionally, the view module details command extends the
Command
class and overrides itsexecute()
command. An external class,ModuleValidator
is called upon to validate the module code that the user has entered, as only the details of valid NUS modules can be displayed.Given below is an example usage scenario and how view module command behaves at each step.
Step 1: The user calls the view module details command from the
AcademicPlannerParser
, which will initialise aModuleDetailsCommand
.ModuleDetailsCommand
’s constructor takes in parameters ofModuleLoader
andString
. Below is a table of what each parameter corresponds to in the state diagram of the program.
Parameter (Class Name) |
Corresponds to (Function of Class) |
Referred to as (Variable Name) |
---|---|---|
ModuleLoader |
Class representing all modules offered by NUS | allModules |
String |
Class representing the module code to print details of | moduleCode |
Step 2: execute()
is called from the instance of ModuleDetailsCommand
. It can throw AcademicException
.
Step 3: validateModuleCode()
is called to validate the user input, moduleCode
, against allModules
.
Step 4: PrintUtils
is called to print the details of the module.
Step 5: ModuleDetailsCommand
, ModuleLoader
and PrintUtils
are terminated.
The following sequence diagram shows how ModuleDetailsCommand
works.
The following diagram summarizes what happens when the user executes a ModuleDetailsCommand
: