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.
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.
- Half of Deck Mode commands, for v1.0
- JUnit tests for DeckParser, NormalParser, Ui classes
- 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
Developer Guide Contribution