Foo Kang - Project Portfolio Page
Overview
NUStudy is a desktop app for managing a student’s study sessions, optimised for use via a command-line interface (CLI).
It is written in Java and uses Gradle for Build Management. JUnit for unit-testing.
Summary of Contributions
1) Feature Implemented
-
AddCourseCommand — Add a new course to the study schedule
PR: #27
- Description: Introduced
AddCourseCommand to register courses via CLI.
- Justification: Foundation for organizing sessions by course, enabling downstream features (session creation, tracking).
- Notes: Input validation, duplicate checks, and user feedback messages.
-
Persistent Storage (Storage class) — Save/Load data between runs
PR: #53
- Description: This feature saves course and session data to a local storage file
NUStudy.txt when the application session ends.
- Justification: Ensures that users’ study data is preserved across application sessions.
- Highlights: This implementation required careful handling of file I/O operations and data serialization to ensure data integrity.
- Credits: Implementation completed fully by me. My teammate, Andrew Gan, contributed to minor bug fixes.
-
Flexible Date Input (DateParser) — Accept multiple date formats
PR: #76
- Description: This feature allows users to input dates in various formats, enhancing user experience.
- Justification: Improves usability by accommodating different user preferences for date input.
- Highlights: This implementation involved creating a robust parsing mechanism that can handle multiple date formats and edge cases.
-
EditSessionDateCommand — Update a session’s date
PR: #80
- Description: Enabled in-place session date edits with validation and user prompts.
- Justification: Allows users to correct or update session dates, improving data accuracy.
- Highlights: Integrated with
DateParser for flexible date input handling.
2) Enhancements to Existing Features
3) Code Contributed
4) Testing
- Wrote unit tests for
CommandParser, Storage, EditSessionCommand and DateParser using JUnit.
5) Documentation
-
User Guide
- Added “Edit study session date for a course” section with examples
PR: #78
-
Developer Guide
-
Documented Storage class design, save sequence diagrams
PR: #65
-
Documented command component architecture and class diagrams
PR: #93
- PRs reviewed (with non-trivial review comments): #71