CSC/ECE 517 Spring 2020/E2022 Allow reviewer to say review can be shown to class as an example: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 162: Line 162:


The following acceptance tests using the RSpec/Capybara tests to be written.
The following acceptance tests using the RSpec/Capybara tests to be written.
 
TODO: Add comments
     describe "user_review" do
     describe "user_review" do
         context "user marks the review as public" do
         context "user marks the review as public" do

Revision as of 19:56, 17 April 2020

Introduction

Expertiza provides a feature to peer review other teams assignments/projects after the submission deadline. Peer reviewing is usually done immediately (within one or two days) after the submission deadline, so that the students get a feedback on their work as soon as they complete it. Then the students are allowed to re-submit the project based on the reviews they get. A constructive review will help students to improve their project in a better way.

Even though advice is given by instructors on how to make a good review, students sometimes find difficulty in providing a helpful review. The quality of the reviews can be improved if students are shown some example reviews while they peer review. These example reviews can either be taken from the assignment of current semester or from the same/related project of previous semesters.

Problem Statement

The objective of the project is to add a feature to show some good sample reviews while the students peer review other teams work. To enable this, students while submitting their peer review give a consent on whether their reviews can be shown as an example to others. Instructors then select a subset of these reviews to be posted as an example reviews. These example reviews are shown in the peer review page (Other's work link) to the entire class.

Additionally,

1. Students should be able to see an entire review, both text and ratings, not just a single comment.

2. The student view should not show the name of the reviewer or the reviewee. The views of power users such as TA, instructor, admin should show these names.

3. The student can remove their consent anytime, and the sample review should no longer be visible to other students.

Previous work

This project was implemented twice before and it was last done in Fall 2019. Though their implementation worked from the UI perspective, there were problems in the code so it was not merged. Some of the problems of the previous work are

1. There were many unexplained code blocks. These code blocks where acquired from previous implementation and the last team seem to have retained it so that the build passes.

2. Project included many irrelevant files and included classes the team didn't understand.

3. Testing was not thorough.

We almost follow the same design as previous work, but we will do our own implementation so that the above problems are addressed.

Design

Key Features

In the order of flow,

1. Student's Consent: In each review assignment, there will be a checkbox that says "I agree to share this review anonymously as an example to the entire class" then students can decide to check this box or not just before they submit reviews. Similarly, the student can revert it back to 'private' anytime. This could be implemented by the simple addition of a checkbox in response.html.erb and set a "status" field to “public”of the Response object via a controller method, preferably "create".

Sequence Diagram:

User_MarkAsPublic_sequence
User_MarkAsPublic_sequence


2. Instructor's Selection: The instructor can select from among the "public" reviews and decides which to make visible to other students doing a particular assignment, i.e. all participants in that assignment. And this will set the “status” field to “publish”. Specifically, the instructor first goes to “View review report” and clicks on one team name (in the “Team reviewed” column). Then in the popup/team_users_popup page we need to add a button (better put it at top right) named “make this review an example”. If this review has already been shown as an example, the button should be “remove this review from examples” instead.

Sequence Diagram:

Instructor_MarkAsSample_sequence
Instructor_MarkAsSample_sequence


3. List of Sample Reviews: A participant can see these "exemplary" reviews by going to "Others' work" for the assignment in question, and clicking on one or more links that say, e.g., "Sample review". And it should be shown just below the title “Review for ...”. It could be implemented on the student_reviews/list.html.erb.

Sequence Diagram:

User_MarkAsPublic_sequence
User_MarkAsPublic_sequence


Use Case Diagram

  • Use Cases -


Power Users: Instructors, TAs, Admins and Super Admins


Proposed Solution Approach

To identify the reviews to be shown as an example, we append a column to the response_maps table representing their respective status. The following table explains the significance of each value:

Status Explanation of the value
PRIVATE Default, private
PUBLIC Public (selected by the student but has not been selected as a sample review by the instructors.
PUBLISHED Selected to show as example by the instructors.

1. Schema: Update the schema with the following column changes via migrations.

1) Add 'status' column to response_map

2) Add new Table 'similar_assignments'

2. Mapping of Reviews and Assignment: The example reviews can either be taken from an assignment of the current course or it could be from an assignment from a previous course. This would enable students working on OSS Project to see OSS Project reviews from a previous semester. One idea is that when clicking to “make this review an example”, it will link to a page where you can select an assignment to which you have access (the same as the list of “Assignment” in the tree_display), then the example review will be shown to all participants of that specific assignment. We also need to do the same thing for “remove this review from examples” Since we already have a response_maps table, we can add a column to map it with a specific assignment. This may/may not need a change in key constraints for the table. We plan to resolve them accordingly.

3. MVC Setup: We would need to create new partials in various views, and possibly a helper for response_controller.rb. We could achieve that by creating a MVC setup for the entire flow.

Proposed code changes

1. Adding a column status in response_maps table. Changes will happen in db/schema.rb

2. Adding a checkbox to select whether reviews could be shown as an example in the response views - /app/views/response/response.html.erb

3. On selecting the checkbox, update the status field in response_maps table in response controller - /app/controllers/response_controller.rb

4. To allow instructor to select among the public reviews make changes in /app/views/popup/team_users_popup.html.haml

5. To enable students to see the example reviews, make changes in the views of student_review - /app/views/student_review/list.html.erb


DB Design

Previous work

The previous approach for DB design added 2 new DB tables to store the status and association of sample reviews, namely, samplereviewmaps and similar_assignemnts. The samplereviewmaps table simple stored 2 fkey associations to review_map id and to the assignment_id.

Our approach

In our approach, we are extending the existing response_maps table to contain an additional field, 'status', that stores the status of the response(review), as suggested in the above approach. This approach would prune the need to add an extra DB table, which would store redundant information. Additionally, the similar_assignemnts table would store the association for a response to all the assignments, the instructor/TA decide to publish for.

User_MarkAsPublic_sequence
User_MarkAsPublic_sequence

Test Plan

Our test plan includes testing through rspec tests and through GUI.

Manual Testing

As a Power User (TA/Instructor/Admin/Super Admin)

  1. Log in
  2. Click on Manage->Assignments
  3. Displays a list of Assignments
  4. Click View Report/Review for a particular assignment.
  5. Displays a list of reviews submitted by students.
  6. Click on any review in "team reviewed" column for a particular student.
  7. Displays the summary of reviews submitted by that student, with a "Make as sample" button on the right of every review.
  8. Click on "Make as sample" for the intended reviews, which opens a popup that displays a list of all assignments that are a part of the instructor's courses.
  9. From this list select all assignments for which the review has to be shown as a sample.
  10. Click on 'Submit' after selection (this closes the popup).
  11. Navigate to view reviews of that particular assignment and click on "Sample Reviews".
  12. A new page is opened that lists out all the sample reviews of the assignment.


As a Student (Scenario 1)

  1. Log in.
  2. Click on Assignments
  3. List of assignments is displayed.
  4. Click on any assignment for which the review has to be submitted.
  5. Assignment task page is displayed.
  6. Click on "Other's work" to open the reviews summary page (at /student_review).
  7. Below the heading "Reviews for ...", click on the "Show example reviews" link.
  8. This opens a page where the student can view all example reviews for that assignment.

As a Student (Scenario 2)

  1. Log in.
  2. Click on Assignments
  3. List of assignments is displayed.
  4. Click on any assignment for which the review has to be submitted.
  5. Assignment task page is displayed.
  6. Click on "Other's work" to open the reviews summary page (at /student_review).
  7. Chose to review any of the teams' assignments that are displayed.
  8. Select a team for review and fill in the review.
  9. Before submitting the review, select the checkbox that says "I agree to share this review anonymously as an example to the entire class".
  10. After clicking on the submit button, the review submitted has been made public.

RSpec Testing

The following acceptance tests using the RSpec/Capybara tests to be written. TODO: Add comments

   describe "user_review" do
       context "user marks the review as public" do
       ..       
       end
       
       context "user marks the review as private" do
       ..       
       end
       
       context "user views the sample review for assignment" do
       ..       
       end
    end
  describe "instructor" do
     context "instructor marks the review as sample" do
       ..       
       end
       
       context "instructor selects similar assignments" do
       ..       
       end
  end

Resources

Previous Team's Work: https://expertiza.csc.ncsu.edu/index.php/E1867_allow_reviewer_to_say_review_can_be_shown_to_class_as_an_example

Repository link: https://github.com/SujalAhrodia/expertiza

Team

Mentor: Dr. Ed Gehringer (efg@ncsu.edu)

Ayush Khot (akhot@ncsu.edu)
Akanksha Bhattacharya (anbhatta@ncsu.edu)
Jasmine Madonna Sabarimuthu (jsabari@ncsu.edu)
Sujal (ssujal@ncsu.edu)