Sheyuan's Project Portfolio Page
Project: StudMap
-
Code contributed: RepoSense link
- Project management:
- Helped to coordinate multiple team meetings
- Enhancements to existing features:
- Proposed and implemented
StudentData
parameter object for easy extension ofStudent
class so that features can be more easily implemented.- Features hinging on this infrastructure include attendance/participation/assignment tracking, and new fields added to
Student
, including Telegram Handle, GitHub username. - This infrastructure also eased the deletion of unneeded features, such as the
Address
field inStudent
.
- Features hinging on this infrastructure include attendance/participation/assignment tracking, and new fields added to
- Planned and wrote the abstraction of student editing via multiple abstract classes, including
IndexCommand
,EditStudentCommand
, andStudentEditor
in order to unify behaviour.- Features hinging on this infrastructure include the commands
edit
,mark
,unmark
,grade
,ungrade
,participate
,unparticipate
,delete
.
- Features hinging on this infrastructure include the commands
- Abstracted the idea of commands that require parsing an
index
inIndexCommand
, so that all index-related behaviour can be changed in one place.- This allowed the syntax of
all
to be used in all such commands, including those mentioned above. - This improved the extensibility of the code to possibly support more sophisticated syntax for specifying
index
in commands without major refactors.
- This allowed the syntax of
- Added the ability for some fields in
Student
such asEmail
andPhone
to be left optional. - Added
MultiStateAttribute
to abstract the commonalities betweeenAttendance
,Assignment
, andParticipation
.
- Proposed and implemented
- Documentation:
- Wrote the preface for User Guide
- Planned and organized the User Guide.
- Prepared the UI screenshots for the User Guide.
- Did general formatting of both User Guide and Developer Guide.
- Community:
- Reviewed most functional pull requests from team members.
- Ensured good code quality by suggesting appropriate implementation strategies.