Project: ProgrammerError

ProgrammerError (PE) is a desktop application which helps CS2100 Lab Teaching Assistants (TAs) manage their students’ lab results in a simple and efficient manner, allowing them to spend less time on administrative processes and more time teaching students. It is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI) developed with Java and JavaFX.

Please find below my contributions to the project. My contributions to the project code base can also be found at the following RepoSense link.


Features

  1. New Feature: Added the ability to filter the list of students based on different query parameters.
    • What it does: Filters the list of students stored in PE by displaying all the students that matches the query parameters. Tutors can specify the filter criteria based on any combination of students’ particulars.
    • Justification: So that tutors are able to quickly filter out the students’ of interest out of their large number of students using known parameters (e.g. Class ID).
    • Highlights: This feature was challenging as it involved filtering students based on any combination of query parameters provided. This also involved creating a whole new command from scratch which requires comprehensive understanding of all the classes in PE.
  2. New Feature: Added a command history feature that allows tutors to navigate to previous commands using up/down keys.
    • What it does: Allows tutors to navigate previously executed commands, similar to the Unix CLI.
    • Justification: So that fast-typists tutors are able to be more efficient when using PE.
    • Highlights: This involved a self-directed learning experience using online materials to properly implement an “onKeyPressed” event listener. Deep thoughts were also required in the consideration of the edge cases to ensure that this feature is free of bug.

Other Contributions

  1. Project management:
    • Created and set up the GitHub team organisation, repo, pages and actions.
    • Managed and ensured the prompt delivery of releases v1.3.trial & v1.3.1 (2 releases) on GitHub.
    • Labelled and referenced all the figures in the DG (PR #603).
    • Solved bug that prevented User Guide and Developer Guide from being linked as one of the header pages in the team’s index.md page (PR #276).
  2. Enhancements to existing features:
    • Enhanced the edit feature to accommodate the changing requirements of PE (PRs #121, #387, #403, #488).
    • Modified generic utility classes for the integration of the new PE requirements (PR #274).
    • Increased user feedback by putting in place better exceptions throwing mechanism and more detailed description (PRs #272, #287, #373, #387, #403, #416).
    • Increased code quality (PRs #206, #495, #509, #622).
    • Various bugfixes (PRs #150, #362, #375, #634).
  3. Documentation:
    • User Guide:
      • Added documentation for the command history navigation feature and for features filter and edit (PRs #35, #148, #160, #210, #385).
      • Created and maintained the command summary at the bottom of the User Guide (PRs #35, #517).
    • Developer Guide:
      • Added implementation details of the filter feature (PRs #162, #549, #576).
      • Added use case scenario for filter feature (PR #598).
  4. Community: