Skip to content

Latest commit

 

History

History
77 lines (55 loc) · 4.73 KB

donaldlee.adoc

File metadata and controls

77 lines (55 loc) · 4.73 KB

Donald Lee - Project Portfolio

PROJECT: Know-It-All


Overview

Know-It-All is a flashcard application that helps students manage, store, and use flash cards effectively. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. My major roles included the report feature and ability to record score.

Summary of contributions

Below is a summary of my coding, documentation, and other helpful contributions to the team project.

  • Major enhancement: added the ability to generate scoring report for card folder

    • What it does: Averages the card scores of all cards in the folder after a test session, called the folder score, and generates a report for that folder that shows the change in past folder scores. There is also a line showing percentage change in folder score as well as the lowest scoring questions in the current folder. An example is shown below.

ReportDisplay
  • Justification: This feature improves the product significantly because a user can see the outcome of the spaced-repetition technique employed by Know-It-All. They are able to track their average score over time, per folder, so that they are able tell which folders they score well and not so well for. This lets them know which folder they need to practice more on.

  • Highlights: This enhancement has a graph showing the last 10 test session scores. The color of the folder score change also changes based on whether it was a positive, same or negative change.

    • Major enhancement: added the ability to sort by scoring performance

  • What it does: allows the user to sort the cards by scoring performance. Other features can make use of this feature by using any appropriate comparator.

  • Justification: This lets the user see which cards they scored the lowest on, so that they know which cards require more practice. This feature also improves the product significantly because many other features can be built on top of this one, e.g. the test session, which puts the lowest scoring cards in front.

  • Highlights: This enhancement affects the existing list. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changing the way cards are naturally ordered.

    • Minor enhancement: Added State to Model Component’s to represent user’s "location" in the application. This removes edge cases of commands being executed illegally, i.e. where they otherwise shouldn’t be.

    • Minor enhancement: added a score attribute that allows the application to track the number of correct and incorrect attempts for individual cards.

    • Code contributed: [ability to sort] [add score attribute][add report]

    • Other contributions:

  • Enhancements to existing features:

    • Wrote additional tests for new features to increase coverage from 80% to 82% (Pull requests #75)

  • Documentation:

    • Rewrote the project README to look like a real product: #107

  • Community:

    • PRs reviewed (with non-trivial review comments): #57, #49, #72, #129

  • Tools:

    • Integrated Github plugins Travis CI, AppVeyor and Coveralls to the team repo: #2

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

I implemented a new report command as well as sort command, which required updates to the user guide so that new users know how to use it.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.

Besides the aforementioned new features for users, I also refactored internal code which affects how other developers should contribute to the project, namely how to pass results from Model into Ui and Model state that the user is in.