Ngo Duc Binh's Project Portfolio Page
Project: StudyBananas
Introduction
Hello, my name is Ngo Duc Binh. At the time of this project (AY20/21 Semester 1), I was a Year 2 Computer Science undergraduate at National University of Singapore. I am a software developer in Team StudyBananas. We worked together to create this wonderful study companion app, StudyBananas. We are really passionate about this project, so we hope that you will enjoy this product as much as we do.
You can find out more about who I am at this link:
PROJECT: StudyBananas
StudyBananas is a desktop study companion app that helps students to centralize all their study tasks into one place with the schedule system and the flashcard-quizzes feature to increase the efficiency of the study session. It is CLI-optimized while still retains the benefits of GUI, which is created with JavaFX. It is written in Java and is primarily morphed from AddressBook3 application created by the CS2103T Teaching Team.
Summary of Contributions:
Given below are my contributions to the project (to be updated).
- Code contributed:
You can view my code contributions to this projects on RepoSense.
- Enhancements implemented:
- Implemented the Model component for
SCHEDULE- What it does:
Represents theTASKobjects that can be created by the user and theSCHEDULEas a collection ofTASKs that the user has.
- What it does:
- Implemented and enhanced the
Logiccomponent forSCHEDULE(with Eddy)-
What it does:
Allows users to use the commands implemented to interact with StudyBananas to achieve different usages they want to do with theSCHEDULEfeature of StudyBananas -
Highlights:
The implementation of the Logic for Schedule reuses a big portion of the available APIs from AddressBook3. As a result, we had to trace and read through the original implementation of AddressBook3 so that we could understand and reuse the available APIs of AddressBook3 to simplify our work.
-
- Testing: Implemented JUnit testing for
LogicandSCHEDULE(with Eddy)-
What it does:
Creates unit tests to ensure that we handle different possible bugs and errors arose fromLogiccomponent andSCHEDULEsystem. -
Highlights:
I added JUnit tests forSCHEDULE’s model, storage and some of the logic, commands components while Eddy added forSCHEDULE’s parsers and commands. We both learnt the lesson that coming up with valid, relevant and sufficient test cases is difficult and it is better to write test cases along with the implementation of features instead of leaving all the testing at the end.
-
- Implemented the GUI for
QUIZ(with Bowei, Petrick)-
What it does:
We revamped the original GUI (ListViewandCommandBox) of AddressBook3 to fit the purpose of aQUIZpage and the intended usage from the user, which primarily contains aQuizCardthat displays thequestion, its respectiveanswerof the flashcard and next command instruction. -
Highlights:
Originally, each of us use a different way to integrate the styling to the page. Some of us usedcssfile, some used thestyleproperty of each component in thefxmlfiles while some set the style itself in thejavafile. Because of this difference, we were not aware of the subtle differences in the final style as some of thestyleoverwrote each other in a hierarchical order. It took us awhile to realise the problem, we then resolved this by agreeing to usefxmlstyle property on each component, coupling with thecssstyling for the part of the style that is not specified thefxmlstyle property.
-
- Enhanced the
CommandResultclass to follow theLogicexecution ofQUIZ- What it does:
The question, answer and instruction provided to the user by StudyBananas are actuallyfeedbackToUserin the original AddressBook3. With the enhancedCommandResult, the question, corresponding saved answer in the flashcard and the correct next command instruction are displayed to the user to enhance the user’s experience. - Justification:
With the original implementationCommandResultonly shows thefeedbackToUserstring after a specific command is executed. Thus, thequestionof theQUIZis only shown after theStartQuizCommandis executed, and it would disappear when user enters the answer to the question, by executing eitherFlipCommandorAnswerCommand(which only containsansweras thefeedbackToUserstring and there is no information about the currentquestion). Our team found this would bring a bad experience to the intended users as it would be intuitive to view the question, their input answer and the correct answer together for revision. - Highlights:
In order to overcome this problem,QuizCard(Uicomponents that displays theQUIZobject) needs to have the information of what is the currentquestionto be displayed to the user. I created a new classQuizCommandResultextending fromCommandResult.QuizCommandResulthas the currentQUIZmodel object as an attribute, which can be accessed and get the corresponding currentquestionand set thatquestionobject toQuizCardso that it can display the currentquestionto the user.
- What it does:
- Implemented the Model component for
- Contributions to team-based tasks:
- Managed overall team workflow.
- Managed and reviewed PRs by team members before merging to the team repo.
- Update the overview introduction and target audience of the User Guide.
- Contributions to User Guide:
Sections Written: - Contributions to Developer Guide:
Sections Written:Diagram:
- Schedule Model Class Diagram
- Storage Component Class Diagram
- Overview of Task Model Class Diagram
- Initial Schedule Object Diagram
- Adding A Task into Schedule Object Diagram
- A New Task Is Created in ScheduleEditCommand Object Diagram
- Task Is Replaced In Schedule Object Diagram
- ScheduleEditCommand Sequence Diagram