Seh Xin Ru - Project Portfolio Page

Overview

iGraduate is a command-line application for NUS students majoring in Information Security to plan their academic journey. iGraduate comes equipped with tools such as module storage, a CAP calculator and academic progression indicators. This allows student to check their graduation progress, check program requirements and make more informed decisions about future modules to take.

Summary of Contributions

Code Contributed

Access my contribution on RepoSense.

Enhancements Implemented

Storage with Ke Wen

Implemented the storage function of iGraduate, including the considerations, researching of third-party libraries and its development. The most difficult portion of implementing the storage function was the use of external libraries, specifically the JSON library. I had to research the limitations and different flavours of JSON (settled on GSON at the end), learn its usage and apply the library to iGraduate.

Parser with Fuxi

I implemented the Parser function. While Fuxi worked on the higher layers of the parser, I coded the foundational code for the parser including the logic behind the parsing structure, the extraction method and the syntax (i.e. parameters and flags) used in the commands. The challenging portion would be designing the behaviour of the Parser. For instance, deciding on how to identify and split the input. The command was first split into the command type (with its parameters) and the flags. The initial arrays used (which were memory efficient) were changed to ArrayList, making use of its class functions (like indexOf() and size()). Another challenge was the use of regex to identify and isolate flags from the main command parameters.

Contributions to UG

  1. Introduction
  2. User Guide usage
  3. Quick start (only the sample output of a successful setup)
  4. Update
  5. Storage
  6. Frequently Asked Questions (FAQ)
  7. Command Summary
  8. Markdown and formatting of DG
  9. Converted all the UG from a word document into GitHub markdown

Contributions to the DG

  1. Introduction
  2. Value proposition
  3. Parser
  4. Storage
  5. Update
  6. User stories (v1.0 and v2.0)
  7. Non-functional requirements
  8. Adding some of the icons used in the DG (like the arrow, bulk and paper icons)
  9. Markdown and formatting of DG

Contributions to Team-based Tasks

  1. Designing the overall code behaviour
  2. Setting up the GitHub
  3. Making necessary general code enhancements
  4. Maintaining the issue tracker
    • Assigning myself or others
    • Creating user stories
    • Creating issues for bugs found
    • Reviewing the issues from the others

Review/Mentoring Contributions

Access all my PRs on GitHub

  1. Bug fixes or suggestions to bug fixes
  2. Implemented helper functions that are used throughout the application

Contributions Beyond the Project Team

  1. Testing other’s products including EasyLog, Finux, etc.
  2. Suggestions for bug fixes
  3. Guided others with a description of my high-level implementation logic (based on what I have coded)