CSC/ECE 517 Spring 2022 - E2244. Support for saying your team pair-programmed
Introduction
E2244 introduces a new feature of pair-programming for the teams. Pair-programming feature will allow the instructor to create an assignment with the option for pair-programming. It will allow the team members to work in collaboration and commit using a single account.
Problem Statement
Expertiza allows the students to form teams for a given assignment. At times the students wish to submit or commit their work in a collaborative way from a single account. As of now, expertiza does not capture this intent of the students which makes it difficult for the instructors and the teaching assistants to understand whether all the students have contributed towards the assignment and students have to commit using different accounts to show their work. E2244 will allow the instructors to create a new assignment with the pair-programming feature which will allow the students to mark whether they performed pair-programming or not for a given assignment. It will also ensure that all the team members have agreed to pair-programming. The instructors and teaching assistants will be able to view whether a team has opted for pair-programming or not on the UI.
What needs to be done
- Student view
- A button for requesting pair-programming
- Pair-programming initiators - the user's view who has requested for pair-programming
- Pair-programming receivers - all the other users to who have to accept/decline the pair-programming request
- Instructor/Teaching Assistant view
- has pair-programming? checkbox on the create assignment page
- pair programming column of a given assignment which will show if a team has opted for pair-programming or not.
- Table changes
- Teams table - Add a new attribute for pair-programming (pair_programming_request)
- Teams Users table - Add a new attribute to capture individual acceptance or rejection of pair-programming request (pair_programming_status).
- Assignment table - Add a new attribute for pair-programming (enable_pair_programming)
Design
Files Requiring Modification
- app/views/assignments/edit/_general.html.erb
It appears this partial renders the general tab of the create new assignments page. We need to add a checkbox for pair programming in this file.
- app/views/assignments/list_submissions.html.erb
This file renders the list of all the submissions for a given assignment. We need to add a new column - pair-programming which will indicate if the team has pair-programmed for this assignment or not.
- app/views/student_teams/view.html.erb
This file renders the team information of a given assignment for a particular member. We need to add a table for pair-programming and a button to request for pair-programming.
- app/models/assignment.rb
This is a model for an assignment. We will add a method pair_programming_enabled? in this file. This will allow us to check if pair-programming has been enabled in the current assignment.
- app/controllers/pair_programming_controller.rb
We have created a new controller to handle the send invitation and accept/decline feature.
Wireframes
- Instructor view
- Student View
Flow Diagrams
- Instructor enables pair programming for an assignment
- Instructor views teams that have performed pair-programming for a particular assignment
- Student initiates a request for pair-programmming
- Student accepts the pair-programming invitation
- Student declines the pair-programming invitation
Test Plan
As this is a new feature, we will perform UI testing (functional) as well as unit testing. Following are the specifics of the testing that will be performed:
Functional Testing
- Scenario 1: Test pair-programming? checkbox visibility
Given: Instructor has logged in When: Instructor clicks on new assignment Then: pair-programming? checkbox is visible
- Scenario 2: Test pair-programming? checkbox ticked
Given: Instructor has logged in When: Instructor clicks on new assignment And: Instructor checks the pair_programming checkbox And: Instructor fills the other required details And: Instructor clicks on create assignment Then: pair-programming is enabled for the assignment
- Scenario 3: Test pair-programming column in the Instructor view assignment page
Given: Instructor navigates to a particular assignment with pair-programming enabled When: Instructor clicks on view submissions Then: Instructor is able to view the submissions along with the pair-programming column
- Scenario 4: Test request for pair-programming button sends invitations to the team members
Given: Student is logged in and is assigned to an assignment When: Student clicks on the Request for pair-programming button Then: All other team members should receive the invitation for pair-programming
- Scenario 5: Test sender status for pair-programming is accepted
Given: Student is on the teams page of an assignment When: Student clicks on the request for pair-programming button Then: The pair-programming status for the sender is marked as accepted
- Scenario 5: Test pair-programming invitation is visible to the student
Given: Another student has initiated pair-programming When: Student navigates to the view teams page Then: Student is able to see the accept|decline invitation
- Scenario 6: Test pair-programming invitation acceptance
Given: Student is able to see the accept|decline invitation When: Student clicks on the accept invitation link Then: Pair-programming status for the student is accepted
- Scenario 7: Test pair-programming invitation declined
Given: Student is able to see the accept|decline invitation When: Student clicks on the decline invitation link Then: Pair-programming status for the student is declined And: Request for pair-programming button is visible
- Scenario 8: Request for pair-programming button is hidden after student clicks on the button
Given: Student is able to see request for pair-programming button When: Student clicks on the request for pair-programming button Then: request for pair-programming button is hidden for all the team members
Unit Testing
- spec/pair_programming_controller_spec.rb
We will test the accept, decline and send_invitations method from the pair_programming_controller.rb file.
- spec/models/assignment.rb
We will test the enable_pair_programming? method in this file
Team Information
Atharva Rajendra Patil
Atharva Milind Joshi
Kriti Khullar
Rucha Kolekar