Devanshu Bisht's Project Portfolio Page
Project: CodeSphere
CodeSphere is a desktop contact management app, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). It is an app targeted at enabling Teaching Assistants in NUS School of Computing to better manage their students.
Given below are my contributions to the project.
- New Feature: Find Command.
- What it does: Locate students in a course using various criteria. The search is case-insensitive and order-agnostic.
- Justification: This feature aids teaching assistants in quickly locating students based on partial information. Enables efficient searches for any attribute, enhancing overall workflow.
- Highlights: Development included distinct predicates for student attributes, integration with the
Course
class for proper list updates, andStringUtil
class enhancements for tailored logic.
- New Feature: StageManager & Stages.
- What it does: Determines the user’s stage to parse commands accurately and guides
UiManager
in displaying relevant components. - Justification: This feature eliminates the need for lengthy, section-specific commands. For example, our application can detect if the
add
command should add a student or course. The logic also prevents bugs from happening as we restrict the usage of some commands based on which stage they are at. - Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to classes such as
LogicManager
andCodeSphereParser
.
- What it does: Determines the user’s stage to parse commands accurately and guides
- New Feature: Home.
- What it does: Allows users to visit back home when they are viewing a student list of a selected course.
- Justification: A user-friendly command to allow users to navigate back to the
home
page which contains all the courses. - Highlights: This command needed to be implemented appropriately such that our application Stage would be implemented correctly.
- New Feature: Add Course.
- What it does: Allows users to add a new course to their taught classes while ensuring it is of the correct format.
- Justification: TAs should be allowed to add any number of courses which they are managing. There should also be a validation to ensure the course is correctly entered into the appropriate format of NUS Courses.
- Highlights: This command needed to be implemented carefully to align with the updated
Model
component of the app.
-
Code contributed: RepoSense link.
- Enhancements to existing features:
- Update StringUtil component for the app (PR #165).
- Update CodeSphereParser component for the app (PR #77).
- Added and updated test files for several classes and existing features to align with the app’s functions (#278, #281, #282, #280, #328).
- Added multiple predicate files in model which are used for the logic in
find
(PR #165). - Implemented an auto
reset
when user goes from a Course stage to a Home stage (PR #165). - Added more sample data in
SampleDataUtil
for first time users to test with (PR #325).
- Documentation:
- User Guide:
- Developer Guide:
- Edited UML diagram for
Model
component (PR #341). - Described the implementation and logic flow of
find
command (PR #341). - Added activity, sequence and class diagrams for
find
command (PR #341, PR #361). - Added manual testing walkthrough for
find
(PR #370). - Added the points under Planned Enhancements (PR #370).
- Edited UML diagram for
- Team-tasks:
- Set up MarkBind initially and then changed to Jerkyll for product website.(PR #71).
- Community:
- Reviewed PRs, and suggested improvements for Javadoc style and code quality.
- Reported bugs for other teams during PE-D and suggested possible improvements. Can be seen here.