<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssuresh6</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ssuresh6"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ssuresh6"/>
	<updated>2026-05-12T01:02:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111614</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111614"/>
		<updated>2017-11-03T02:06:12Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Reviewers are assigned new reviews based on number of previous reviews ''assigned'' for that submission, which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
&lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:INFOBUT.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT2.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Test Plans==&lt;br /&gt;
'''Issue #402''' :This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is his own submission.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Issue #969''' :Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT3.PNG]]&lt;br /&gt;
&lt;br /&gt;
'''Issue #965''' :We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:crappy.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111127</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111127"/>
		<updated>2017-11-01T18:44:43Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Reviewers are assigned new reviews based on number of previous reviews ''assigned'' for that submission, which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:INFOBUT.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT2.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT3.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Test Plan''': We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:crappy.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Crappy.PNG&amp;diff=111126</id>
		<title>File:Crappy.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Crappy.PNG&amp;diff=111126"/>
		<updated>2017-11-01T18:44:10Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111125</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111125"/>
		<updated>2017-11-01T18:40:43Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Reviewers are assigned new reviews based on number of previous reviews ''assigned'' for that submission, which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:INFOBUT.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT2.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT3.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Test Plan''': We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:issue3^.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111124</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111124"/>
		<updated>2017-11-01T18:20:32Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:INFOBUT.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT2.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
[[File:INFOBUT3.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Test Plan''': We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:issue3^.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT3.PNG&amp;diff=111123</id>
		<title>File:INFOBUT3.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT3.PNG&amp;diff=111123"/>
		<updated>2017-11-01T18:14:10Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT2.PNG&amp;diff=111122</id>
		<title>File:INFOBUT2.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT2.PNG&amp;diff=111122"/>
		<updated>2017-11-01T18:14:00Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT.PNG&amp;diff=111121</id>
		<title>File:INFOBUT.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:INFOBUT.PNG&amp;diff=111121"/>
		<updated>2017-11-01T18:13:49Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111120</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111120"/>
		<updated>2017-11-01T18:10:12Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Test Plan''': We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:issue3^.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111119</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111119"/>
		<updated>2017-11-01T18:09:41Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before:&lt;br /&gt;
[[File:issue2.PNG]]&lt;br /&gt;
&lt;br /&gt;
After:&lt;br /&gt;
[[File:issue2solved.PNG]]&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Test Plan''': We created a dummy assignment with a team size of 2, 3 such teams are created. Maximum allowed reviews is 2 now.&lt;br /&gt;
Previously for a submission after 2 people begin review its does not give any further submission to review to that user because it already reached the limit.&lt;br /&gt;
&lt;br /&gt;
[[File: issue3.PNG]]&lt;br /&gt;
On changing the method, when we try to get a new submission we receive one. This is because the previous reviewers have only begun their reviews but have not submitted them yet.&lt;br /&gt;
&lt;br /&gt;
[[File:issue3^.PNG]]&lt;br /&gt;
Now when the previous two reviewers submit the reviews they began. Now the same new reviewer will not be able to submit his review&lt;br /&gt;
&lt;br /&gt;
[[File:issue3solved.PNG]]&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3solved.PNG&amp;diff=111118</id>
		<title>File:Issue3solved.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3solved.PNG&amp;diff=111118"/>
		<updated>2017-11-01T17:44:25Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3%5E.PNG&amp;diff=111117</id>
		<title>File:Issue3^.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3%5E.PNG&amp;diff=111117"/>
		<updated>2017-11-01T17:44:11Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3.PNG&amp;diff=111116</id>
		<title>File:Issue3.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue3.PNG&amp;diff=111116"/>
		<updated>2017-11-01T17:43:53Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2solved.PNG&amp;diff=111115</id>
		<title>File:Issue2solved.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2solved.PNG&amp;diff=111115"/>
		<updated>2017-11-01T17:43:31Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2.PNG&amp;diff=111114</id>
		<title>File:Issue2.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Issue2.PNG&amp;diff=111114"/>
		<updated>2017-11-01T17:43:14Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111113</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111113"/>
		<updated>2017-11-01T17:34:57Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2. oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111112</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111112"/>
		<updated>2017-11-01T17:32:58Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2.&lt;br /&gt;
    oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
    So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
    When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
    If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
    So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
    his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
   them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
     This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
*'''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
    The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
    Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
  not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
  lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
    it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
    The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111111</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111111"/>
		<updated>2017-11-01T17:32:20Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2.&lt;br /&gt;
    oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
    So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
    When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
    If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
    So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is &lt;br /&gt;
    his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for &lt;br /&gt;
   them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
     This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c)The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
    The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
    Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has &lt;br /&gt;
  not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might &lt;br /&gt;
  lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until &lt;br /&gt;
    it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
    The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111110</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111110"/>
		<updated>2017-11-01T17:30:46Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
*'''Test Plan''':This is shown graphically with dummy topics and assignment. We create a dummy assignment with two different topics oss1 and  oss2.&lt;br /&gt;
oss1 has 2 slots and oss2 has 1 slot.&lt;br /&gt;
So when a student who has submitted oss2 tries to review others work he will not be able to select oos2 at all because he cannot review his own submission. &lt;br /&gt;
When a person who has oss1 as topic goes to this page and he asks to get a new submission for review it will give another slot’s oss1. &lt;br /&gt;
If he does it again it says there are no more submissions available to review for this topic. &lt;br /&gt;
So if he has already reviewed all the other submissions of his topic oss1 and he requests for one more submission of oss1 , he will not get any more submission to review because the only one left is his own submission. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''Test Plan''': Set allowed number and required number of reviews per submission  as 3 and 3 respectively.&lt;br /&gt;
    Now it will display &amp;quot;you should perform exactly 3 reviews.&amp;quot; &lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111040</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111040"/>
		<updated>2017-10-30T20:53:24Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111039</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111039"/>
		<updated>2017-10-30T20:52:52Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111038</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111038"/>
		<updated>2017-10-30T20:52:11Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Morecrap.png&amp;diff=111037</id>
		<title>File:Morecrap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Morecrap.png&amp;diff=111037"/>
		<updated>2017-10-30T20:51:39Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: dvfbgnhm&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dvfbgnhm&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111036</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111036"/>
		<updated>2017-10-30T20:50:56Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111035</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111035"/>
		<updated>2017-10-30T20:50:33Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111034</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111034"/>
		<updated>2017-10-30T20:50:16Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111033</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111033"/>
		<updated>2017-10-30T20:49:30Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111032</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111032"/>
		<updated>2017-10-30T20:44:23Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111031</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111031"/>
		<updated>2017-10-30T20:43:13Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111030</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111030"/>
		<updated>2017-10-30T20:42:47Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111029</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111029"/>
		<updated>2017-10-30T20:41:53Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:morecrap.png]]&lt;br /&gt;
[[File:lesscrap.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Lesscrap.png&amp;diff=111028</id>
		<title>File:Lesscrap.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Lesscrap.png&amp;diff=111028"/>
		<updated>2017-10-30T20:41:03Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Infobuttons.png&amp;diff=111027</id>
		<title>File:Infobuttons.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Infobuttons.png&amp;diff=111027"/>
		<updated>2017-10-30T20:39:43Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: uploaded a new version of &amp;amp;quot;File:Infobuttons.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111026</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111026"/>
		<updated>2017-10-30T20:38:50Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.PNG]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111025</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111025"/>
		<updated>2017-10-30T20:37:41Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifixmodi.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Uifixmodi.PNG&amp;diff=111024</id>
		<title>File:Uifixmodi.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Uifixmodi.PNG&amp;diff=111024"/>
		<updated>2017-10-30T20:37:06Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111022</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111022"/>
		<updated>2017-10-30T20:32:43Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
*'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
*'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111021</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111021"/>
		<updated>2017-10-30T20:32:07Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
'''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
'''Issue #969''': &lt;br /&gt;
*a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
This modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
 '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
'''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Issue #965''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
'''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
The modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111018</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111018"/>
		<updated>2017-10-30T20:30:33Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Issue #402 ''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Issue #969''': &lt;br /&gt;
a.The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
b) When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
c) The capitalization and punctuation of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers either.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111015</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111015"/>
		<updated>2017-10-30T20:25:18Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Functionality */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111014</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=111014"/>
		<updated>2017-10-30T20:23:17Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* The punctuation, syntax and the capitalization of statements in the review strategy tab requires improvement.&lt;br /&gt;
* Information buttons to elaborate difference between the synonymous statements present in review strategy tab need to be included.&lt;br /&gt;
* Message to a reviewer regarding how many reviews they are required to and allowed to perform is not clear enough.&lt;br /&gt;
* Assignment of work to review for a new reviewer is based on the number of previous reviews assigned for that submission which is incorrect.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110944</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110944"/>
		<updated>2017-10-30T00:40:29Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Modified File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified Files==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110943</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110943"/>
		<updated>2017-10-30T00:40:16Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110942</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110942"/>
		<updated>2017-10-30T00:39:16Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Modified File */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''==Modified File=='''&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
'''===References==='''&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110941</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110941"/>
		<updated>2017-10-30T00:38:46Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=110833</id>
		<title>CSC/ECE 517 Fall 2017</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017&amp;diff=110833"/>
		<updated>2017-10-28T17:59:46Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Writing Assignment 2'''&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1779. Fix teammate advertisements and requests to join a team]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1773 Investigate and Fix Expertiza Production Version Runtime Exceptions.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1774 Metareview fixes and improvements.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1788 OSS project Maroon Heatmap fixes]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1781 Topic Management]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1745_Refactor_response_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1752 Refactor assignments controller]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1776_Enhance_Imports]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1756 TLD Refactor response.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1772_Refactor reputation_web_service_controller.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/M1754_Mutation Testing on Servo]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1753 OSS project bidding tests]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1766_Test team functionality]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1787_OSS project Bronze Score calculations]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1763 Fix Staggered-Deadline Assignments]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1757 Introduce a Student View for instructors]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1769_Refactor assignment_form.rb]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1754_Feature_test_of_rubric_advice]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1782 OSS Project Red Assignment Directories]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1748 Add past-due assignments to task list]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1761 Test First Development Refactor assignment.rb]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1780_OSS_Project_Teal_Email_Notification_Enhancements]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1762 Test various kinds of response-map hierarchies]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2017/E1759 ]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb]]&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110807</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110807"/>
		<updated>2017-10-28T04:51:57Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png? maxwidth=600&amp;amp;maxheight=600]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110806</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110806"/>
		<updated>2017-10-28T04:51:39Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png?maxwidth=600&amp;amp;maxheight=600]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110805</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110805"/>
		<updated>2017-10-28T04:48:01Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110804</id>
		<title>CSC/ECE 517 Fall 2017/E1777 Coherent specification of review requirements.rb</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2017/E1777_Coherent_specification_of_review_requirements.rb&amp;diff=110804"/>
		<updated>2017-10-28T04:47:23Z</updated>

		<summary type="html">&lt;p&gt;Ssuresh6: /* Drawbacks and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==E1777. OSS Project Green: Coherent specification of review requirements==&lt;br /&gt;
&lt;br /&gt;
This page provides a description of the Expertiza based OSS project. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About Expertiza===&lt;br /&gt;
&lt;br /&gt;
[http://expertiza.ncsu.edu/ Expertiza] is an open source project based on [http://rubyonrails.org/ Ruby on Rails] framework. Expertiza allows the instructor to create new assignments and customize new or existing assignments. It also allows the instructor to create a list of topics the students can sign up for. Students can form teams in Expertiza to work on various projects and assignments. Students can also peer review other students' submissions. Expertiza supports submission across various document types, including the URLs and wiki pages.&lt;br /&gt;
&lt;br /&gt;
===Problem Statement===&lt;br /&gt;
The following tasks were accomplished in this project:&lt;br /&gt;
&lt;br /&gt;
* Improved the punctuation, syntax and the capitalization of statements in the review strategy tab. &lt;br /&gt;
* Provided information buttons to elaborate difference between the synonymous statements present in review strategy tab.&lt;br /&gt;
* Display of message to a reviewer regarding how many reviews they are required to and allowed to perform.&lt;br /&gt;
* Assignment of work to review for a new reviewer is now based on the number of previous reviews submitted for that work and not on the numbers of assigned reviews for that work.&lt;br /&gt;
&lt;br /&gt;
===Implementation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Functionality=====&lt;br /&gt;
* In Expertiza, there are two ways of assigning reviews to reviewers: either the instructor decides who reviews whom (“instructor-selected”), or “auto-selected,” in which case reviews are not assigned until a student seeks to choose something to review. To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that the reviewer has reviewed all the submissions that have only 2 reviews. Then he or she will not be allowed to review at all (unless k &amp;gt; 0).&lt;br /&gt;
* The capitalization and punctuation in many statements under the review strategy tab are random.&lt;br /&gt;
* On the Review Strategy tab of assignment creation, the &amp;quot;Maximum number of reviews per submission&amp;quot; checks  the number of reviews that have been assigned to reviewers  instead of checking the number of reviews that are submitted by the reviewers. This means that if required number of reviewers choose submissions and don't submit their reviews,  those submissions cannot be reviewed any more.&lt;br /&gt;
&lt;br /&gt;
=====Drawbacks and Solutions=====&lt;br /&gt;
* '''Problem 1''': To allow reviewers a larger set of topics to choose from, the instructor can set the threshold (on the Review Strategy tab of assignment creation/editing) to some integer k &amp;gt; 0. Then any submission that has within k reviews of the fewest number can be chosen by a new reviewer. Let’s say that all submissions have at least 1 review. If k = 3, then the reviewer can choose any topic where there is a submission that has 4 or fewer reviews so far. Suppose that the minimum number of reviews for any submission is 2, but that I have reviewed all the submissions that have only 2 reviews. Then I’m not allowed to review at all (unless k &amp;gt; 0). &lt;br /&gt;
* '''Solution''': This issue has been fixed previously. The reviewer will get assigned a submission even if it has fulfilled the required number of reviews, to ensure that the reviewer always receives a new submission to review as long as it is not his own. &lt;br /&gt;
* '''Problem 2''': The two statements &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; are not well differentiated. It can very confusing for an instructor to give values for them.&lt;br /&gt;
&lt;br /&gt;
* '''Solution''': Information buttons have been provided beside these statements in the review strategy tab to make sure that the instructor knows the difference between the two.&lt;br /&gt;
* this modification is made in the app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:infobuttons.png|200px|thumb|left|alt text]]&lt;br /&gt;
[[File:infobutton2.png]]&lt;br /&gt;
*'''Problem 3''': When the number of allowed or required reviews is not set on the Review Strategy tab, the system does not have a message to display to a reviewer about how many submissions of work they are required to and allowed to review depending on the values set by the instructor in the &amp;quot;allowed number of reviewers per reviewer&amp;quot; field and the &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; field.&lt;br /&gt;
 &lt;br /&gt;
* '''Solution''': This view has been implemented in the app/views/student_review/list.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Reviews for &amp;quot;&amp;lt;%= @assignment.name %&amp;gt;&amp;quot;&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Changing statements to display on the others work screen--&amp;gt;&lt;br /&gt;
&amp;lt;% if @assignment.num_reviews_allowed.nil? || @assignment.num_reviews_allowed == -1%&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;Your instructor expects you to do &amp;lt;%= @assignment.num_reviews_required %&amp;gt; reviews. You are not allowed to do any extra reviews. &amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;% elsif @assignment.num_reviews_allowed == @assignment.num_reviews_required %&amp;gt;&lt;br /&gt;
    &amp;lt;h4&amp;gt;You should perform exactly &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews &amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% else %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4&amp;gt;You may perform between &amp;lt;%= @assignment.num_reviews_required %&amp;gt; and &amp;lt;%= @assignment.num_reviews_allowed %&amp;gt; reviews&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;% end %&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Problem 4''': The capitalization and punctuations of statements such as &amp;quot;Set Allowed Number of Reviews per reviewer&amp;quot; and &amp;quot;Set Required Number of Reviews per reviewer.&amp;quot; in review strategy tab are incorrect. &lt;br /&gt;
* '''Solution''':  This view has been fixed by making changes in the respective files.&lt;br /&gt;
* The changes were made in the file : app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;%= label_tag('assignment_form[assignment][num_reviews_required]', 'Set required number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_required]', @assignment_form.assignment.num_reviews_required ||= @assignment_form.assignment.num_reviews, size: 1) %&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
    &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the minimum number of reviews a reviewer has to perform'&amp;gt;&lt;br /&gt;
  &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;%= check_box_tag('review', 'true', true, {:onChange =&amp;gt; 'hasReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('review', 'Has max review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_reviews_allowed]', ' Set allowed number of reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_reviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_reviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]', @assignment_form.assignment.num_reviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_reviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
      &amp;lt;!--Adding info button--&amp;gt;&lt;br /&gt;
      &amp;lt;img src=&amp;quot;/assets/info.png&amp;quot; title='This is the maximum number of reviews a reviewer can perform'&amp;lt;%= 'hidden' if @assignment_form.assignment.num_reviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td width=&amp;quot;50%&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_required]', 'Set required number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_required]', @assignment_form.assignment.num_metareviews_required ||= @assignment_form.assignment.num_metareviews_allowed, size: 1) %&amp;gt;&lt;br /&gt;
   &amp;lt;br/&amp;gt;&lt;br /&gt;
      &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;%= check_box_tag('meta_review', 'true', true, {:onChange =&amp;gt; 'hasMetaReviewChanged()'}) %&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('meta_review', 'Has meta-review limit?') %&amp;gt;&amp;amp;emsp;&amp;amp;emsp;&lt;br /&gt;
    &amp;lt;span id=&amp;quot;meta_reviews_allowed&amp;quot; &amp;lt;%= 'hidden' if @assignment_form.assignment.num_metareviews_allowed.nil?%&amp;gt;&amp;gt;&lt;br /&gt;
    &amp;lt;%= label_tag('assignment_form[assignment][num_metareviews_allowed]', ' Set allowed number of meta-reviews per reviewer') %&amp;gt;&lt;br /&gt;
      &amp;lt;%if @assignment_form.assignment.num_metareviews_allowed &amp;amp;&amp;amp; @assignment_form.assignment.num_metareviews_allowed &amp;gt;= 0 %&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]', @assignment_form.assignment.num_metareviews_allowed ||= 3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%else%&amp;gt;&lt;br /&gt;
    &amp;lt;%= text_field_tag('assignment_form[assignment][num_metareviews_allowed]',  3, size: 1) %&amp;gt;&lt;br /&gt;
      &amp;lt;%end%&amp;gt;&lt;br /&gt;
    &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[File:uifix (2).png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Problem 5''': The assignment of work to review to a reviewer depends on the number of reviews it has previously received, if that work has been assigned to a reviewer previously and its review has not been submitted then the system will still consider it such that it would not assign the same work to another reviewer if it has enough number of reviewers previously assigned to review it. This might lead to a scenario where that work was assigned to enough number of reviewers, but it does not receive enough reviews and cannot be assigned to any new reviewers.  &lt;br /&gt;
* '''Solution''': This implementation has been fixed. The system now considers only the reviews that were submitted by the reviewers for that work so that every submission gets assigned to reviewers until it receives its allowed number of reviews.&lt;br /&gt;
&lt;br /&gt;
*the modified file is app/models/review_assignment.rb and the modification is done in the method reject_by_max_reviews_per_submission&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def reject_by_max_reviews_per_submission(contributor_set)&lt;br /&gt;
  contributor_set.reject! {|contributor| contributor.responses.reject {|response|  !response.is_submitted }.count &amp;gt;= max_reviews_per_submission }&lt;br /&gt;
  contributor_set&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modified File==&lt;br /&gt;
* app/views/assignments/edit/_review_strategy.html.erb&lt;br /&gt;
* app/models/review_assignment.rb&lt;br /&gt;
* app/views/student_review/list.html.erb&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
#[https://github.com/expertiza/expertiza Expertiza on GitHub]&lt;br /&gt;
#[https://github.com/WintersLt/expertiza GitHub Project Repository Fork]&lt;br /&gt;
#[http://expertiza.ncsu.edu/ The live Expertiza website] &lt;br /&gt;
#[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza project documentation wiki]&lt;br /&gt;
#Clean Code: A handbook of agile software craftsmanship. Author: Robert C Martin&lt;/div&gt;</summary>
		<author><name>Ssuresh6</name></author>
	</entry>
</feed>