Alicia Tay - Project Portfolio Page
Overview
GULIO is a university module manager designed for efficiency when used by fast typists. It is capable of storing lessons and tasks for individual modules and lesson notes via cheat-sheets.
Summary of Contributions
Click here to view code contribution.
Enhancements Implemented
- Implemented and maintained the task commands.
AddTaskCommand
,DeleteTaskCommand
,ListTasksCommand
,MarkAsDoneCommand
,MarkAsUndoneCommand
: I implemented these classes very differently from the iP. Mainly, I kept looking for ways to do more SLAP, application of DRY principle, SoC, and less coupling, to all the code I wrote this time around. Figuring out what constitutes as a duplicate task also took me a while.EditTaskCommand
: Invoking this command involves multiple rounds of prompting and checking input, which had to be handled carefully and displayed in a standardised way with the other commands.
- Wrote basic JUnit tests for the 6 commands.
- Wrote
AddTaskCommandTest
with Isa’s help.
- Wrote
- Implemented the
Task
class with Wen Hao and some general methods inUI
. - General code cleanup.
- Helped to standardise printing across commands.
- Improved printing for some commands (e.g. printing task list, differentiated same lesson types when printing for
DeleteLessonCommand
). - Removed duplicate/similar constants across all classes.
- Refactored code.
Contributions to Documentation
- Visualisation of GULIO’s 2-layer system (Figure 2 in UG, Figure 1 in DG).
- Worked with Wen Hao on the “How to Use This Guide”, “Overview” sections.
- “Editing a task :
edit task
” section. - General editing, proof-reading, organisation of the UG.
- Both on Google Docs and multiple rounds in Markdown.
Contributions to Developer Guide
- Set up skeleton of the DG at the start.
- “Adding of Cheat-Sheet” section.
- 2 sequence diagrams and their write-ups.
- Done twice due to changes in the code (bug fixes, enhancements) after V2.0/V2.1.
- All sections under “Appendix: Requirements”.
- “Design Considerations”, “UI Component” sections.
- General editing, proof-reading of the DG.
- Both on Google Docs and multiple rounds in Markdown.
Contributions to Team-Based Tasks
- Fixed and identified minor bugs in some components.
- Maintained issue tracker.
- Wrote the README.md.
- Tidied up AboutUs.md, added GULIO banner for Github Pages.
Review/Mentoring Contributions
- Code enhancements.
- Provide checks for PRs with many LOC changed.
- Wenhao’s code cleanup.
- https://github.com/AY2021S2-CS2113T-W09-3/tp/pull/45
- Gave suggestions to rename methods/classes to follow coding standards.
- https://github.com/AY2021S2-CS2113T-W09-3/tp/pull/218
- https://github.com/AY2021S2-CS2113T-W09-3/tp/pull/22
- Gave feedback for teammates’ class diagrams offline/in Google Docs.
Contributions Beyond the Project Team
[Optional] Contributions to Developer Guide
Some examples:
Adding of Cheat-Sheet
The
AddCheatSheetCommand
class enables the creation, addition and saving of a “.txt” file to the current module’s “Cheatsheet” directory (see Figure 5). Upon creating a new instance of it and calling theexecute()
method on it, the GULIO Text Editor application will also be automatically started.An invocation of the
add cheat-sheet
command involves the following interactions:
Figure 10a - AddCheatSheetCommand Invocation Sequence DiagramWhen
AddCheatSheetCommand
is executed, it gets the currently selected module by calling thegetSelectedModule()
method inModuleList
. It then checks if the file name given by the user is invalid. If no,AddCheatSheetCommand
proceeds to call thegetDirectoryPath()
method in itself to obtain the directory where the cheat-sheet would be saved to. It then calls theopenTextEditor()
method itself, which will interact with theTextEditor
class, which is a Singleton class, in the following way:
Figure 10b - Opening the Text EditorThe
openTextEditor()
method will first check if the single instance ofTextEditor
isnull
. If it is, then there is no GULIO Text Editor window currently opened andopenTextEditor()
proceeds to call thecreateNew()
method ofTextEditor
. This initialises the single instance ofTextEditor
by calling the class constructor, which sets up, loads from previous data (if any) and opens the Text Editor for the user. The user can now start typing into the Text Editor.Appendix: Requirements
Product Scope
Target user profile:
- Needs a consolidated and personalisable workspace to organize their university modules
- Prefers desktop apps over other types
- Can type fast
- Is comfortable using CLI apps
- Is familiar with command-line shell environment
Value proposition:
Efficiently view and update regularly-needed information on modules and deadlines using a single keyboard.
User Stories
💡 Priority levels:
1
: High (Must have)
2
: Medium (Good to have)
3
: Low (Unlikely to have)
Priority As a/an … I want to … So that I can … 1 new user see available commands refer to the help page when I forget how to use the app 1 NUS student add a module store useful information by module that I can easily refer to 1 NUS student faced with e-learning add a lesson consolidate regularly-needed information such as Zoom links by tutorial/lecture, for quick access before the lesson 1 busy NUS student add a task keep track of assignments and deadlines for a module in an organised to-do list 1 NUS student get an overview of the module / lesson / task list filter out specific information with a single command 2 NUS student delete a module store the information only temporarily, e.g. for the semester/term 2 NUS SoC student open a module’s cheat sheet(s) I have a handy list of tools for the module, tests and exams at my disposal 2 NUS SoC student with many team projects View a module’s project team information and contact details keep track of the various teams I am in and communicate more efficiently with my teammates 3 busy NUS student sort tasks by graded and done status know which tasks are of highest priority Note: some are features to be implemented in future.
Non-Functional Requirements
- Text editor will only work on OS with GUI support.
- All other features will work on any mainstream OS.
- It should work for students taking up to 10 modules.
- Each module should be able to store 100 tasks without issues.
- Every command should respond within 10s of input on a typical modern computer.
Glossary
- Mainstream OS: Windows, Linux, Unix, OS-X
- CLI: Command-Line Interface
- GUI: Graphical User Interface
- Module: A university module
[Optional] Contributions to User Guide
Some examples:
Figure 2 - Visualisation of GULIO’s 2-layer system
⚠ Only accepts 3 lesson types:
Lecture
,Lab
andTutorial
. Lesson type is auto-capitalised when displayed, hence input for the field is not case-sensitive.💡 To skip an input, leave a blank in between the field separators. For example,
add lsn tutorial ;; ;; ;; Prof Akshay ;; akshay@email.com
will add “Tutorial” to the module’s list of lessons with only the given teaching staff name and email. The fields “day & time” and “link” were skipped.
Note: “lesson type” cannot be skipped.