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 StudentDataparameter object for easy extension ofStudentclass 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 Addressfield 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, andStudentEditorin 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 indexinIndexCommand, so that all index-related behaviour can be changed in one place.- This allowed the syntax of allto 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 indexin commands without major refactors.
 
- This allowed the syntax of 
- Added the ability for some fields in Studentsuch asEmailandPhoneto be left optional.
- Added MultiStateAttributeto 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.