eCardnomics
December 2020
eCardnomics is a desktop flashcard application to quickly create, manage, and access new flashcards via a Command Line Interface (CLI). eCardnomics is targeted at economics students in Junior College in Singapore, and aims to enhance students’ study experience as an efficient and handy aid for active recall.
The main goals of this application are to help students store and segment their economics subject syllabus into different decks, consolidate bite-sized information within each topic by way of flash cards, and offer a fun way for students to study and revise.
Takeaways
This was a National University of Singapore (NUS) computer science module introducing key ideas and real-world applications of software engineering concepts, taught in Java, culminating in a 5-man team project.
Through this project, I applied concepts of abstraction and encapsulation, Java 8 Streams, and unit and integration testing in a team Command Line Interface (CLI) project. I wrote 3500 out of 6000 lines of code, including the application’s main Game Mode, and wrote 40% of user and developer documentation. I also managed issues and releases, and authored 40 PRs in two months.
Code Contribution
Reposense dashboard summary Detailed writeup
v1.0:
- Half of Deck Mode commands, for v1.0
- JUnit tests for DeckParser, NormalParser, Ui classes
v2.0:
- UG for Game Mode, Help Commands
- DG for Commands and Game Mode sections
- Implementation of Game Mode
- JUnit tests for Game Mode
Game Mode Feature
Implemented Game Mode feature. For this, our team originally thought it would be just another command implemented as part of Normal Mode or Deck Mode, but I felt it deserved its own mode. I created a separate package, game
, and parser class GameParser
for Game Mode, with the game
package abstracting away the entire Game Mode implementation from the rest of the application.
So the resulting game
package is structured as such:
game
| Game
| GameEngine
| runGameLoop(), update()
| GameStorage
| originalDeck, deque, retestStore
Here, I also tried as much as possible to incorporate the Single Responsibility Principle, both within the game
classes and the SRP-ness of the existing classes.
User Guide Contribution
Snippet:
Developer Guide Contribution
Snippet: