CSC/ECE 517 Fall 2020 - E2077. Mentor management for assignments without topics E2024: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 5: Line 5:
===  ''Objectives''  ===
===  ''Objectives''  ===
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics<br>
1. Assign a TA or instructor as a mentor for a team created for an assignment without topics<br>
2. Notify mentor and individuals of a team when a mentor has been assigned<br>
2. Notify mentor and individuals of a team via Email when a mentor has been assigned<br>


===  ''Previous Work''  ===
===  ''Previous Work''  ===

Revision as of 01:21, 29 October 2020

Project Overview

Background

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.

Objectives

1. Assign a TA or instructor as a mentor for a team created for an assignment without topics
2. Notify mentor and individuals of a team via Email when a mentor has been assigned

Previous Work

We learned from previous implementations and looked to avoid the following pitfalls when implementing our solution:

  • Code was merged from the previous team, but not refactored, so a lot of unused code remained.
  • Should have followed a better naming convention for methods
  • Some redundant codes in the views could be DRYed out.
  • Commented code should be removed.
  • Some complex logic is added but not explained in the comments.
  • Code should be placed in most relevant classes. (E.g. Do not put email code in the Team class).
  • Documentation doesn't accurately represent implementation.
  • Lacked sufficient detail for Test section.

Previous Implementation's Wiki

Program Design

We are proposing the following design with our implementation.


Our implementation begins when the team is created. Once a team is created, it prompts a question asking if the assignment that the team is being created before has a topic. If the assignment is associated with a topic, teams are not given a mentor. If the assignment does not have a topic, a list of mentors is queried. The list contains mentors and details the amount of teams each of the mentors is assigned to. A mentor is then selected for the least amount of teams assigned. Once the team is assigned a mentor, an email is sent out to the mentor and students in the team to notify them of their mentor assignment


Currently instructors see the corresponding view when looking at teams associated with an assignment:

Our team is proposing to add an additional "Mentors" column in the instructor view:

Currently students see the corresponding view when looking at their team for an assignment:


Our team is proposing to add an additional "Mentors" section in the student view:

Files Modified/Created

These are the files we plan to modify/create throughout our project. More to come to this section as we continue with development...

Database

  • Schema.rb
    • create teams_mentors table and have references to users, assignments, and teams tables.
    • Keeps track of all mentors assigned to all teams.

Models

  • team_mentor.rb
    • responsible for ensuring mentor with the least number of teams mentored, gets assigned to the next team created.

Controllers

  • teams_controller.rb
    • responsible for interacting with team_mentor.rb model and ensuring the correct data is fed to model as a new team is created.

Views

  • views/teams
    • responsible for displaying mentors assigned to teams for an instructor creating teams.
  • views/student_teams/view.html.erb
    • responsible for displaying to a student the mentor assigned to their team for an assignment.

Testing Plan

Edge Cases

The following are scenarios our team has thought about:

Edge Case 1: How will we handle the "Has topic?" check box being changed when editing the assignment in the instructor view. This button is how we decide if we need to assign mentors to a team.

  Option A: Always run our algorithm for each assignment made and only show which mentors are assigned if the "Has topic?" is not checked
  Option B: Add the functionality to add and remove mentors for all assignments, not just assignments without topics then add and remove mentors when an assignment is edited.



Edge Case 2: No mentors exist

  Option A: Don't assign mentors
  Option B: Prevent creation of teams

RSpec Test

RSpec test to check:

  • Validation of the models
  • Functionality of controllers

UI Test

In the UI test we are going to verify that: As an instructor should be able to see, the following:

A student should be able to see the following after viewing their team for an assignment:

Future Implementation

1. Implementing manual mentor assignment capability for instructors assign mentors to a team.

References

Github Repository:
Pull Request:
Previous Implementation's Wiki

Team

Santiago Sepulveda
Skieler Capezza
Liam Donovan
Javier Sanchez
Mentor: Yulin Zhang