CSC/ECE 517 Fall 2016 E1707: Top trading cycles to exclude previous teammates

From Expertiza_Wiki
Jump to navigation Jump to search

Introduction

Expertiza is an open source web platform that enables students and instructors indulge in an enhanced and accelerated peer based learning milieu. It is aided by facilities like submissions of project work and reviews according to instructor approved deadlines, teaming up with other peers for various projects, reviewing other teams' and teammates' work and personalization of a project submission according to the best suited requirements. All these factors make Expertiza a valuable asset for an instructor to guide his students through the course with much more effectual results.

Expertiza source code is built using Ruby on Rails and is available on github with public access enabled repository.

Problem Description

Currently, before the start of an assignment, students can be asked to form teams on their own or teams can be assigned by the instructor. As the main motive is guide students via peer based learning, thus more number of peers the student works with, better learning. So, to enable students find different people for the assignments rather than just team up with same people for every assignment in the current course, students can ask for a team to be randomly allocated by not choosing the team members before hand. After the bidding for the project topics is over, the student is allocated a team. Here, in this case it may be possible that the student is allocated a team member they have previously worked with before. Hence, to enable student circumvent this situation in case he/she prefers different people for the particular, we need to provide an option for the students to choose if they prefer different team members for the assignment before the bidding for the project topics happens.

Project Outline

The main objective is to give students an option to choose whether or not they want to team up with their previous team members for a particular assignment in the current course.

If they choose the option, then when a student is added to the team, a check is performed if he/she has worked with the student before. If such is the case, then the student is swapped with some other student who hasn't worked with the same person before.

Another point to note is that if the student chooses some person to be on the team who he/she has worked with before, choosing this option would still allow the person to remain in the team.

Approach

To implement top trading cycle algorithm, we would be utilizing the web service that is hosted at http://peerlogic.csc.ncsu.edu/intelligent_assignment/swap_team_members. The students, and student history would be provided to the web service and the response from the web service would be utilized to update the teams. The web service is expected to respond back with new team after swapping the team members that have teamed up before. As part of the changes, a new flag would be introduced in the teams model. The teams do not want to be changed (swapped) would have to unset the flag. If the flag is unset, the teams would not be send to the web service for the swap operation. Only the instructor would see the option of utilizing this feature from the view. The feature would not be present for the students. As part of the changes a new method would be added in the lottery controller to implement this functionality. The new method would have the responsibility to utilize the webserver and update the teams according to the web service. A new button would be added in the instructor view for the assignments for invoking this new method. A new checkbox would be added in the students view for selecting/un-selecting the option of swap.

High Level Design

Populating Data For the Web Service


Flow Diagram once the data is populated


Detailed Workflow

• The first step is to include a checkbox to provide student with an option to select if he/she want to be assigned new people who were not previously team up with the student.

• An additional flag has to be introduced in the teams table that represents the value of the checkbox.


The following flow chart diagram describes this scenario at the front end:



• After instructor initiates the team creation process, first check is to know whether the team members have already been chosen by the student. If yes, then the team is created as it is with the chosen members.

• If, the student doesn't have all/some team members already selected, a team is created for the student by calling the create teams method in the top trading cycle service.

• After a team is created, the flag is checked if the student wanted new team members for the assignment who were not team up before.

• Then for each team member selected to be on the team, it is checked if the he/she has been teamed up with before. If no, then we move on to the next member.

• If the team member has been teamed up with before, we call the swap method in the top trading cycle service and pass the student's team history.

• Using that information, he/she is swapped with some other team member who hasn't been on the team.

• This process repeats for each member, until we cover all the team members. At the end, we have our team ready.


The following flow chart diagram describes this scenario at the back end:


Files To Be Modified

  • app/views/assignments/_reserve_topic.html.erb
  • app/controllers/sign_up_sheet_controller.rb
  • app/views/sign_up_sheet/list.html.erb
  • app/controllers/lottery_controller.rb

Testing Plan

1. "To check if team creation will create teams with students having put up with the teammates previously teamed up with"

  • Set max number of students per team to 3.
  • Manually make change in DB to make 3 students previously team up with 3 other students.
  • Have 6 students bid for a topic.
  • Call the team creation method
  • Check if any student is paired with a student they had already teamed up with. If no, then this test is a success.

2. "To check if the new team creation algorithm does not allocate more than the max number of people per team"

  • Set max number of students per team to 2.
  • Have 6 students bid for a topic.
  • Call the team creation method.
  • Check if any team has more than 2 students.

3. "To check if students who have chosen their own team members are not swapped even though they might have worked together before"

  • Make 2 students teammates. For convenience, let the students be 'A' and 'B'.
  • Set max number of students per team to 3.
  • Have a total of 6 students choose topics.
  • Check that in the team containing the 'A', 'B' is also present.

4. "To check if the new_members flag is not set, then the team members should be the same for that particular assignment"

  • Make four students, A,B,C and D.
  • Two teams where created, team A containing A and B, and team B containing C and D for an assignment with maximum team size 2.
  • Each team had unset the new_members option.
  • After running the method run_intelligent_assignment, the teams where checked to see if they are still the same.

5. "To verify if the student team history is returned correct: The teamed_students method is invoked there are no previous teammates"

  • Verify that the returned hash is empty

6. "To verify if the student team history is returned correct: The teamed_students method is invoked when the student has team mates."

  • The teamed_students method is invoked with name_required set to true.
  • Verify that the names of the previous teammates are returned.

7. "To verify if the student team history is returned correct: The teamed_students method is invoked when the student has team mates."

  • The teamed_students method is invoked with name_required set to false.
  • Verify that the user ids of the previous teammates are returned.

8. "To verify if the student team history is returned correct: The teamed_students method is invoked when the student has team mates."

  • The teamed_students method is invoked with exclude_assignment_id set to the current assignment id.
  • Verify that the user ids of team mates in the current assignment ids are not returned.

9. "To verify if the student team history is returned correct: The teamed_students method is invoked when the student has team mates."

  • The teamed_students method is invoked with include_assignment_id set to the current assignment id.
  • Verify that the user ids of team mates in the current assignment ids are only returned.

10. "To verify if the top trading cycles is working correctly"

  • An assignment is created which implements the intelligent bidding.
  • 4 students are created, of which 2 have an history of an assignment with the other 2(these are mutually exclusive)
  • The students are added to the assignment.
  • The students set the preference to be paired with new teammates.
  • The students prioritize topics. This is the bidding process.
  • The intelligent assignment is run for this particular assignment.
  • We expect that the student who have history together not be paired again, even if they have the same priority for the topics.