Project: FaculType

FaculType is a desktop app for managing faculty members and their modules, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI) created with JavaFX. It is written in Java, and has about 11 kLoC.

Given below are my contributions to the project.

  • New Feature: Implemented Modules (including its attributes and UniqueModuleList)
    • What it is: A representation of modules that are available in the user’s university/college.
    • Justification: This feature improves the product by allowing users to insert modules into the app.
    • Highlights: This feature is a foundation for module-related commands to be added in the future. It required an in-depth analysis and understanding of how the application works as a whole (from displaying the components to how it stores the data).
  • New Feature: Added the ability to list all modules
    • What it does: A command to show all available modules in the active semester in the module list.
    • Justification: This feature improves the product by allowing users to only reset the view of the module list while still keeping the filtered contacts list.
    • Highlights: This feature required an understanding of the model class.
  • New Feature: Added the ability to detect duplicate prefixes
    • What it does: Detects whether there’s a duplicate prefix provided by the user.
    • Justification: Restricts the user by forbidding multiple prefixes in commands which doesn’t support multiple prefixes of the same type.
    • Highlights: This feature required an understanding of how the ArgumentMultimap class works.
  • New Feature: Added the ability to detect any prefix from the list of required prefixes
    • What it does: Checks whether there exists at least one prefix from the list of supported prefixes by a command.
    • Justification: This feature improves the app by allowing commands (such as find and findmod) to be more flexible by not requiring users to provide all supported prefixes (users only need to input at least one prefix).
    • Highlights: This feature required an understanding of how the ArgumentMultimap class works.
  • New Feature: Displays the module list and a view of switching semesters
    • What it does: Switches the tabs in the GUI to represent the switching of semesters.
    • Justification: This feature improves the product as it gives users a graphical view of all the modules in the active semester (Semester 1 or Semester 2).
    • Highlights: This feature required an in-depth understanding of how JavaFX works (both in the design aspect and the functional coding aspect) and an analysis of all existing components and its CSS attributes.
    • Credits: Module TabPane color scheme link.
  • Code contributed: RepoSense link

  • Enhancements to existing features:
  • Documentation:
    • User Guide:
      • Added documentation for the features find, mlist, and clist: #96, #98, #105
      • Added current bugs: #278
    • Developer Guide:
      • Updated the class diagrams of Model, Storage, and UI: #130, #239
      • Added implementation details of the find feature: #130, #229
      • Added the use cases for all features: #31, #96, #240, #262
      • Added the manual testing for most features: #262, #272
      • Added current bugs: #278
  • Community:
    • PRs reviewed (with non-trivial review comments): #64, #93, #121, #122, #123, #135, #222
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3, 4, 5, 6)