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 theTASK
objects that can be created by the user and theSCHEDULE
as a collection ofTASK
s that the user has.
- What it does:
- Implemented and enhanced the
Logic
component 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 theSCHEDULE
feature 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
Logic
andSCHEDULE
(with Eddy)-
What it does:
Creates unit tests to ensure that we handle different possible bugs and errors arose fromLogic
component andSCHEDULE
system. -
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 (ListView
andCommandBox
) of AddressBook3 to fit the purpose of aQUIZ
page and the intended usage from the user, which primarily contains aQuizCard
that displays thequestion
, its respectiveanswer
of 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 usedcss
file, some used thestyle
property of each component in thefxml
files while some set the style itself in thejava
file. Because of this difference, we were not aware of the subtle differences in the final style as some of thestyle
overwrote each other in a hierarchical order. It took us awhile to realise the problem, we then resolved this by agreeing to usefxml
style property on each component, coupling with thecss
styling for the part of the style that is not specified thefxml
style property.
-
- Enhanced the
CommandResult
class to follow theLogic
execution ofQUIZ
- What it does:
The question, answer and instruction provided to the user by StudyBananas are actuallyfeedbackToUser
in 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 implementationCommandResult
only shows thefeedbackToUser
string after a specific command is executed. Thus, thequestion
of theQUIZ
is only shown after theStartQuizCommand
is executed, and it would disappear when user enters the answer to the question, by executing eitherFlipCommand
orAnswerCommand
(which only containsanswer
as thefeedbackToUser
string 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
(Ui
components that displays theQUIZ
object) needs to have the information of what is the currentquestion
to be displayed to the user. I created a new classQuizCommandResult
extending fromCommandResult
.QuizCommandResult
has the currentQUIZ
model object as an attribute, which can be accessed and get the corresponding currentquestion
and set thatquestion
object toQuizCard
so that it can display the currentquestion
to 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