Project: ProgrammerError

ProgrammerError is a desktop application which helps CS2100 tutors 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.

The following is a summary of my contributions to the project. (View Reposense)

Features

  1. New Feature: Automatic sorting of the student list.
    • What it does: it helps to ensure that the student list is always sorted whenever an add or edit command is executed.
    • Justification: This feature improves the product significantly as it helps to simulate a real-life nominal roll where the students will always be sorted by class and name, giving the user an organized set of student data.
    • Highlights: This enhancement provides the user with a more convenient and accessible experience in finding his / her students.
  2. Improved Feature: Added Student ID, Class ID, and Email
    • What it does: it provides more information pertaining to a student.
    • Justification: This feature improves the product by providing important information to identify the student by.
    • Highlights: This feature will be used in other commands such as add, edit, and filter. This feature was tedious as it required an overhaul of the existing AB3 features and test cases. This feature also overlaps with the sample data.
  3. Improved Feature: Added a new set of Sample Data.
    • What it does: it helps to populate ProgrammerError with some students.
    • Justification: This feature improves the testability of the product where it allows first-time users to explore and learn the various features provided by the product.
  4. New Feature: Implemented a feature to help generate random lab scores.
    • What it does: add randomized lab scores to the students in the sample data.
    • Justification This feature improves the testability of the product, providing randomized lab scores to the user.
    • Highlight: This feature requires getting the total lab score of a particular lab as an upper bound for the randomization to work to avoid generating an invalid score.
  5. Improved Feature: Implement unique email.
    • What it does: it ensures that only unique email inputs are valid when executing add or edit student commands.
    • Justification: simulating a real-world constraint, there will never be two students with the same email address. It also helps to ensure the filter command results are consistent and accurate.
    • Highlight: Initially I thought that this will be a straightforward implementation. However, after implementing this feature, I discovered a few bugs which I will explain below.
  6. Improved Feature: Implement error messages for duplicate email and student id.
    • What it does: it helps inform the user what is the error with his input command, duplicate student id, or a duplicate email. This will help provide the user with a better understanding of the error.
    • Justification: previously, we only implemented a duplicate student error which is vague and does not provide the user with enough feedback to correct his command input.
    • Highlight: After enforcing this feature and together with feature 5, there was a bug where the user is forced to input a unique email and student id. But users were now unable to edit the existing student id or email. Hence, it required some troubleshooting.
  7. Minor Fix: Helped to refactor and update the entire project file to match our product name.

Other Contributions

  1. Code contributed: RepoSense link

  2. Project management: Managed releases v1.2a, v1.4, v1.4.1 (3 releases) on GitHub

  3. Enhancements to existing features:
    • Refactor the entire project structure to fit our product #61 , #91 , #99 , #382
    • Fix Parser Test Cases #68
    • Implement automatic sorting #161 , #192
    • Populate sample data #169
    • Fix cosmetic error message #324 #328
    • Fix duplicate email #427
  4. PRs Reviewed:
  5. Documentation - Updated documentations for user guide and developer guide:
  6. Community Contributions: