CSC/ECE 517 Fall 2019 - E1994. Mentor management for assignments without topics

From Expertiza_Wiki
Jump to navigation Jump to search

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.

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.

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, only OSS project and final project which have topic could be assigned mentors automatically by Expertiza system.

New version:

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


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


Code Modified & Added

Estimate files need to be modified:
Controllers:

  • app/controllers/notification_controller.rb
  • app/controllers/participants_controller.rb
  • app/controllers/assignment_controller.rb
  • app/controllers/join_team_requests_controller.rb
  • app/controllers/users_controller.rb

Models:

  • app/models/assignment.rb
  • app/models/assignment_*.rb
  • app/models/user.rb
  • app/models/signed_up_team.rb

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 refactoring
  • 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