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: Added the ability to assign contacts to modules
    • What it does: Allows the user to assign a particular contact to one or more modules in the active semester.
    • Justification: This feature improves the product by helping the user keep track of the assignments of faculty members to the modules that they instruct. This is one of the main value propositions of FaculType, as it allows faculty leaders to manage the relationship between faculty members and modules instead of managing faculty members and faculty modules separately.
    • Highlights: This enhancement required an in-depth understanding of how data is stored inside the Model component. Development could only be done after the module management features were finished.
  • New Feature: Added the ability to switch between semesters
    • What it does: Allows the user to switch to the other semester’s module list.
    • Justification: This feature improves the product by allowing the user to switch to another module configuration quickly. This is also one of the main value propositions of FaculType, because a particular semester/term tends to not change a lot from year to year, but the modules offered in Semester 1 might differ greatly from those offered in Semester 2 (and their instructors as well). The ability to switch to another configuration is much more convenient than having to erase and re-add module data each semester.
    • Highlights: This enhancement required an in-depth analysis of design alternatives. A change to the AddressBook structure was also required. This feature was developed last and the result of all module management features now depend on the active semester.
  • New Feature: Added the ability to add remarks
    • What it does: Allows the user to add additional information or personal remarks to contacts.
    • Justification: This feature improves the product by helping the user keep track of useful additional information about the contact that cannot be stored inside the contact’s attributes.
    • Highlights: This enhancement required an understanding of how the application parses and executes commands. This was one of the first enhancements made for FaculType.
  • Code contributed: RepoSense link

  • Project management:
    • Managed all team releases (v1.1 - v1.4) on GitHub
    • Managed the issue tracker and created every issue for each iteration
    • Assigned issues and delegated tasks to team members
    • Led the weekly project meetings
    • Recorded all demo videos
  • Enhancements to existing features:
    • Designed the FaculType icon (Pull requests #94)
    • Modified command messages to be more descriptive (Pull requests #181)
    • Wrote additional tests for ModelManager to increase coverage (Pull requests #227)
    • Added sample modules (Pull requests #178)
  • Documentation:
    • User Guide:
    • Developer Guide:
      • Added implementation details of the assign and switch features #261, #128
      • Added manual testing instructions for the assign and switch features #261
      • Added effort appendix #281
      • Add current bugs and upcoming features #263
      • Maintained correctness and consistency from time to time: #41, #47, #261
  • Community:
    • PRs reviewed (with non-trivial review comments): #61, #95, #144
    • Reported bugs and suggestions for other teams in the class (examples: 4, 5, 6, 7)