Skip to content
This repository has been archived by the owner on May 20, 2023. It is now read-only.

Latest commit

 

History

History
147 lines (113 loc) · 6.73 KB

lycjackie.adoc

File metadata and controls

147 lines (113 loc) · 6.73 KB

Lee Yu Choy - Project Portfolio

PROJECT: PlanWithEase

Hello there! I am Jackie. I am currently a student at the National University of Singapore
(NUS) studying Information Security. I love to build application that could simplify our life then break it down to make it better again!

This portfolio documents my involvement in the PlanWithEase, a degree planner application which is morphed from AddressBook Level 4.

PlanWithEase is developed by my team (consisting of Ahn TaeGyu, Bai YunWei, Ngo Wei Lin, Yeo Cheng Hong and myself) under the CS2113T (Software Engineering & Object-Oriented Programming) module taken in NUS over the span of 8 weeks.

Overview

For this project, we aim to simplify the process of planning a degree, and ensure that the degree plan fulfills the degree requirements for graduation.

With this goal in mind, we developed PlanWithEase (PWE), degree planner desktop application designed to help National University of Singapore (NUS) Information Security freshmen in creating a comprehensive degree plan with ease according to their degree requirements.

We understand that planning a degree is not an easy task,and can be very time-consuming. Further more there are much considerations to make, making it confusing, troublesome and difficult to create the perfect degree plan.

With this goal in mind, we developed PlanWithEase (PWE), a degree planner application designed to help NUS Information Security freshmen in creating a comprehensive degree plan according to the degree requirements effortlessly.

Ui

My role as a developer in this project involves designing and write code to enhance our existing find features which enables our users to do the following:

  • Finding modules with either its name, code or credits.

  • Complex search terms to narrow down the find results.

Understanding This Project Portfolio

The following symbols are used throughout this project portfolio:

ℹ️

This symbol denotes information that you may want to take note of when using the application.

💡

This symbol denotes a tip which you may find useful when using the application.

⚠️

This symbol denotes a warning message which you need to be careful of when using the application.

Additionally, you may also encounter the following text styles:

  • Commands or parameters will be in this format.

  • Important messages will be bold.

  • Undoable command will be in italics.

  • Keyboard buttons will be referred to as such: F1.

Summary of contributions

This section details the main enhancements as well as other contributions I have made in the project.

  • Main enhancement: added the ability to perform complex find command

    • What it does: allows the user to find modules via more complex find criteria. Find criteria can be composed from mixed of logical AND (&&) and logical OR (||), users can optionally specify parenthesis to denote the expression to be evaluated first.

    • Justification: With a expected large number of modules available in our application, users needs to be able to find a small subset of modules which are of interest to them. The ability of performing complex find commands give users the flexibility of finding a smaller subset of modules which are relevant to them.

    • Highlights: The algorithm for this enhancement was generalized not only to suit my own features, but also my team mate’s features. My team mate (Ahn TaeGyu) has managed to make use of this generalized class I created for his own features. The implementation of this enhancement required some research on the different ways of parsing a boolean expression, as there are many parsing algorithms available. After deciding on the algorithm to be used, I had to implement the said algorithm in code using an Object-Orientated style, while trying to abstract the algorithm as much as possible as per the requirements of Object-Oriented Programming.

  • Code contributed: [Commits] [Pull Requests] [RepoSense Code Contribution Dashboard]

  • Other contributions:

    • Project management:

      • Set up the organization and main repository.

      • Managed release v1.4 on GitHub

      • Contributed to user stories on Github issue tracker #66 and help to create issues label on Github.

    • Enhancements to existing features:

      • Sourced for new application icon and update the application accordingly. #110

      • Updated the GUI color scheme. #144

      • Collaborated with a team mate (Ngo Wei Lin) to implement a custom string tokenizer BooleanExpressionTokenizer, which enables the users to be able to use complex search conditions to narrow down their search when using find and planner_show commands. (#119)

    • Documentation:

      • Modify the structure and did clean up to existing contents of the User Guide: #1, #207

    • Community:

      • Reviewed about one-third of the team’s Pull Requests(PRs) and gave non-trivial review comments : #82, #109, #136

      • Contributed to forum discussions #14

      • Reported bugs and suggestions for other teams in the class (1, 2, 3)

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 to facilitate mastering of PlanWithEase's features. .

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.