CSC/ECE 517 Fall 2019 - E1994. Mentor management for assignments without topics: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 65: Line 65:
*app/views/shared_scripts/_add_individual
*app/views/shared_scripts/_add_individual
*app/views/participants/_participant
*app/views/participants/_participant
<br>...<br>
*...<br>
Here we present some essential codes with explanation<br>
Here we present some essential codes with explanation<br>
[[File:Mentor_role.png]]
[[File:Mentor_role.png]]

Revision as of 21:00, 6 December 2019

Problem Statement

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.

Links to the project

Github Pull Request: https://github.com/expertiza/expertiza/pull/1651


The goal behind this project:

Develop a trigger that:
1) 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

2) 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.

3) Notify the mentor via email that they are now assigned to a specific team, and provide the email addresses of the team members.
4) Possibly notify the team members that they have been assigned the mentor with contact information (further discussion here)

Design Pattern

Since the trigger we implemented would need multiple handlers and each of them reponses in different actions, we decide to use Chain of Responsibility as the design pattern. Chain of Responsibility is a behavioral 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.

Implementation for our project

Project Description

Old version:

For assignments without a topic, there is no way to assign a mentor to the team on Expertiza system but to manually assigned one via Email out of the system.
In the above case, there is no mentor role for the current Expertiza system, only to assign mentor manually

New version:

Assignments with or without a topic could be assigned with mentors automatically

Also, mentor and team members will be notified by Emails(Results showing in UI Test).


Design Diagrams

Work Flow Diagram


Proposed Solution

The solution we proposed generally follow the chain of responsibility and the work flow
The solution will follow steps list here:

  • Allow instructor to assign mentors for assignments without a topic
  • Check the topic of assignment and number of team members whether reach the requirement or not
  • Assign mentor for the team automatically
  • Notificate both mentor and student
  • Team member added after the mentor assignment will also get a email notification about mentor


Code Implementation & Explanation

Since we implemented a whole new feature and kept the original work flow unchanged at the meantime, most modifications are in models:
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
  • ...

Here we present some essential codes with explanation

First, add mentor role for assignment. Set authorization for mentor which could not do review, take quiz or submit.


Add a mentor role for instructor/admin when add participant for assignment



To assign a mentor, there are several requirements:

  • There should be at least one mentor in this assignment
  • The current team size is greater than half of max size
  • The team do not have a mentor yet



Always assign mentor with lowest number of mentoring teams, in order to do so:

  • First, get all mentors for this assignment
  • Traverse all mentors and calculate how many teams he/she mentored, store the one with lowest number
  • Return mentor with lowest number of team she/he mentored

Test Plan

To make sure the refactor code can work correctly, we need to run the original rspec test code and add some new test. Besides, we are plaining to test from UI to make sure all the features work. The test results are shown below.

  • Run and pass existing RSpec Tests after Modification
  • Develop New RSpec Tests for the new features
  • UI testing on the deployed project

RSpec Test

UI Test

Team Member

Our team members: (Sorted in Alphabetical order)

  • Hongli Wang, hwang85@ncsu.edu
  • Minghao Liu, mliu25@ncsu.edu
  • Ruiwen Wu, rwu5@ncsu.edu
  • Siwei Wen, swen4@ncsu.edu

Mentor: Mrs. Carmen Aiken Bentley