CSC/ECE 517 E2024 Mentor management for assignments without topics
CSC/ECE 517 E2024 Mentor management for assignments without topics
Problem Statement
Currently, Expertiza has no way to associate mentors with teams. For assignments with topics, like the OSS project, mentors are associated with topics, and then whichever team is assigned to the topic inherits the mentor for that topic, However, for assignments without topics (like Program 2), there is no good way to “automatically” assign mentors to projects. The instructor needs to watch teams being formed, and every time a new team is formed, a new mentor needs to be assigned, outside of Expertiza. This leads to a lot of work for the instructor, as well as sometimes long delays before a team is assigned a mentor.
Project Goal
Develop a trigger that:
- Is activated when any team has been formed that has k members, where k is greater than 50% of the maximum team capacity
- ex. max members = 4, trigger activated when the team size reaches 3
- Assign a mentor to the team. Mentors should be evenly assigned to teams, so a good strategy is to assign the mentor who has the fewest teams to mentor so far.
- Notify the mentor via email that they are now assigned to a specific team, and provide the email addresses of the team members.
- Possibly notify the team members that they have been assigned the mentor with contact information.
Previous Work
Design Pattern
Since the trigger they implemented would need multiple handlers and each of the responses in different actions, they decided to use Chain of Responsibility as the design pattern. Chain of Responsibility is a behavioural design pattern that lets you pass requests along a chain of handlers. Upon receiving a request, each handler decides either to process the request or to pass it to the next handler in the chain. The reason to take this approach is we have a certain question which needs to be answered, based on the answer the flow moves. It follows a sequence which follows this behaviour pattern well.
Work Flow Diagram
Assignments with or without a topic could be assigned with mentors automatically
Improvement on the Previous Work
Change in Work Flow Diagram
Files Modified
Controllers:
- app/controllers/submission_records_controller.rb
- app/controllers/student_teams_controller.rb
Models:
- app/models/assignment_team.rb
- app/models/assignment_participants.rb
- app/models/team.rb
- app/models/team_users.rb
Views:
- app/views/student_task/view
- app/views/student_teams/view
- app/views/shared_scripts/_add_individual
- app/views/participants/_participant
- app/views/assignments/list_submissions.html.erb
- app/views/mailer/notify_member.html.erb
Rspec:
- spec/features/staggered_deadline_spec.rb
- spec/models/assignment_team_spec.rb
- spec/models/team_spec.rb
Mailers:
- app/mailers/mailer.rb
I. Refactor Code to follow good coding practices
Example:
1. Rename method names more meaningfully and intuitive.
2. Reduce the number of conditional statements checking for mentor. 3. Rename variable names to reduce confusion like changing lowest_team_no to lowest_number_of_teams. 4. Make the code DRYer
II. Correct Previous Design
1. Remove mentors from being included in a team's number of members count.
2. Change the View to make mentor separate from the team.
BEFORE
3. Change the conditional statement that checks if a mentor has to be added to the team. (The strength of the team has to be greater than 50% of the team size).
4. Fix the SUBMIT button issue during role selection
III. Code placed in the wrong locations to be moved to the desired locations.
Example:
- The email code moved to the email module.
- Code written in team file moved to the assignment team file.
Functionalities added
- The mentor should be able to check submissions of his team.
This is a new functionality, where a mentor when logged in , would be able to view all the teams assigned under him for an assignment, when he clicks view and manage teams. Additionally the respective teams submissions and submission histories could be viewed by the mentor (if and only a submission is available).Existing functions and classes were reused.
- Email notification for mentor/ team members
This functionality aims at generating an email notification to the mentor/ team member when a team is created giving details about the team name and the team members/mentor they have been assigned with. Additionally a notification is generated for every team member that is newly added to the group.
- Accommodate changes in team members/assigned topics after a mentor has been assigned.
This is planned to be addressed as per the new flow diagram, where a check will be performed to see what type of a team it is, new or modified one. If the strength of the team reduces below the threshold, the assigned mentor is removed and a new mentor is added when the threshold is reached again.
Testing
- Some existing test cases have been modified, which have been reverted.
- Run and pass the existing RSpec Tests.
- Test the UI for the deployed project.
UI Testing
Part 1:
- Login as the instructor6
- In the assignments view, select the add participants icon.
- Now, all the existing participants and their roles and permissions are visible. Add a new participant or change permissions. This could be a member or mentor for our case.
- Fix the max team size of the project. This size will decide when to add a mentor. (Here set as 4)
Part 2:
- Login as student575 (added to the program by the instructor)
- In the assignments view, select program 1. Within that select your team link.
- Currently there is no team. Create a new team.
- Invite student573 (who's also a participant in this project)
- Invite student574 (who's also a participant in this project)
Part 3:
- Login as student573.
- In the assignments view, select program 1. Within that select your team link.
- There will be an invite from user575, accept it.
- Will be added to the team and a mentor is assigned. (here it is 563)
- Check for a received email regarding team information.
- Login as student574.
- Steps are the same as Part3. The difference will be in the email received. No new team formed or mentor assigned. Only 574 is added to the team and he alone gets the email.
Part5:
- Login as student563. (Mentor)
- In the assignments view, select program 1. Within that select your team link. All the mentor's teams for that project will be listed.
- The mentor would have gotten an email when a new team is formed and they are added as the mentor.
Future Work
- Rubrik for a Mentor has to be implemented. Since this functionality has multiple dependencies, it could not implemented this time.
- If a mentor is removed from an assignment, reassignment of mentor has to be done. (edge-case)
- Rspec for email functionality needs to be implemented.
Team Roster
- Rajan Anbazhagan - ranbazh@ncsu.edu
- Sreenidhi Ganapathi Raman - sganapa4@ncsu.edu
- Mohnish Ramani - mramani@ncsu.edu
- Thomas Winter - thwinter@ncsu.edu
Mentor: Srujana Rachakonda - srachak@ncsu.edu