Andrew Gan’s Project Portfolio Page
Project: NUStudy
NUStudy, an NUS CS2113 team project (tP), by team W14-2, AY2526S1, is a desktop app for managing study hours, optimised
for use via a command-line interface (CLI). It is written in Java.
Given below are my contributions to the project.
- New Feature: Implemented the
resetCourseHoursCommand class:
#36, #28.
- What it does: Allows users to reset the logged study hours for a specified course or all courses.
- Justficiation: This feature improves usability by giving users flexibility to start new every semester or clear
hours for a specific course without deleting the course entirely.
- Highlighs: This implementation required integrating the feature across multiple components while maintaining
the course-session connection. It also involves handling exceptions with a double confirmation flow to prevent
accidental data wipe.
- Credits: Design inspired from this
article. Implementation
completed fully by me.
- New Feature: Implemented the data loading component under the
Storage class:
#63.
- What it does: Loads and parses stored course and sessiond data automatically from a local storage file
NUStudy.
txt when a new application session starts. This allows users to resume study progress tracking seamlessly across
multiple application sessions.
- Justification: Without automatic data loading, all previously recorded study hours will be wiped when the
application session closes. This feature improves user experience and persistence.
- Highlights: This implementation requires careful handling of file I/O operations and parsing logic. It uses a
buffer of class
BufferedReader to safely transfer the data over. To handle exceptions, corrupted entires are
skipped to prevent application session crashes at runtime.
- Credits: Idea of
BufferedReader is obtained from this article.
Implementation is completed fully by me. My teammate, Foo Kang, contributed to minor bug fixes.
- Code Contributed:
RepoSense link
- Enhancement to existing features:
- Implemented
DeleteSessionByIndexCommand and DeleteSessionByDateCommand classes for enhanceed flexibility for
deleting sessions by date for all couress or a specified index for a specified course:
#85.
- Added JUnit 5 test cases for my implemented features and enhancements. Raised total method
coverage to 100%: #90.
- Documentation:
- User Guide:
- Added documentation for features
delete course by index, delete course by date and reset course
hours: #90.
- Added documentation for data integrity and safety for clear understanding of how data loading is handled:
#180.
- Developer Guide:
- Added implementation details, activity flow diagram and design considerations of the
reset feature:
#71.
- Added implementation details and sequence diagram for the data loading component feature:
#71.
- Added list of validation checks and execution upon detection of invalid entries:
#180.
- Community:
- PRs reviewed (with non-trivial review comments): #65.
- The confirmation handler feature I implemented was adopted by my teammate, Kandasami:
#86.