<?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=Rbhatt</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=Rbhatt"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Rbhatt"/>
	<updated>2026-06-06T00:34:26Z</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_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105736</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105736"/>
		<updated>2016-11-14T23:52:29Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Steps to follow for all external links (Github, YouTube etc) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows students to learn from each other work. &lt;br /&gt;
#It provides a dual benefit for both the reviewer and the writer as they are introduced to a different set of eyes on the code&lt;br /&gt;
#It might expose edge cases not previously thought of&lt;br /&gt;
#It helps instructors review a project faster&lt;br /&gt;
#It emphasizes the importance of writing in such a way that it's easy for a third person to read and understand&lt;br /&gt;
In order to assess and analyze quality of reviews, we want to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. To assess and improve review qualities, the purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g. GitHub and Youtube use cases&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach and Implementation'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps to follow for all external links (Github, YouTube etc)'''===&lt;br /&gt;
On clicking a submitted link available in '''submitted_content/submitted_files.html.erb''', a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. &amp;lt;br/&amp;gt;&lt;br /&gt;
Our solution is to embed the submissions (done on an external website) within the peer assessment system itself using e.g., '''IFrame''' or '''Embed''' tag. &lt;br /&gt;
We shall include two new javascript files - '''TimeMe.js''' and '''IfVisible.js''' to keep track of open submission links and time spent viewing them. &amp;lt;br/&amp;gt; The following are the steps that will be followed to keep track of the time: &lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Time is saved into the database when the user saves, submits review or closes the popped-up window&lt;br /&gt;
##If the corresponding entry already exists, the value of the time column is updated otherwise it is created&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Behaviour Diagram''' :&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Flow.JPG|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Instructor can now view the times taken for reviewers by reviewer in the Review report summary. This report is rendered by partial '''review_mapping/_review_report.html.erb'''. We shall modify this view to record the times spent by the reviewer per review round for each assignment. For example - 15.32/12.67 indicates that reviewer spent 15.32 minutes on round 1 review and 12.67 minutes on round 2 review.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Modified View''' :&amp;lt;br/&amp;gt;&lt;br /&gt;
review_mapping/_review_report.html.erb will be modified to show the time spent in reviewing a submission. For example, the view below shows a sample modification of the view to depict the time taken in different rounds (separated by '/').[[File:ReviewReport1.png|center]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Edge cases that need to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset &lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Database Design'''===&lt;br /&gt;
The following table review_submission_timing will be created to implement a solution for this project: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Database table review submission timing.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Files to be modified/added'''===&lt;br /&gt;
#student_review/list.html.erb&lt;br /&gt;
#review_mapping/_review_report.html.erb&lt;br /&gt;
#review_mapping_helper.rb (method- get_data_for_review_report)&lt;br /&gt;
#Additionally, we will create a new model class corresponding to new database table&lt;br /&gt;
#TimeMe.js and IfVisible.js for handling timing counter&lt;br /&gt;
&lt;br /&gt;
==='''Test Plan'''===&lt;br /&gt;
'''Functional Testing using RSpec:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To test if the time spent by the reviewer on the submitted links shows up in the response_report in Instructor View. &amp;lt;br/&amp;gt;&lt;br /&gt;
# Login as a reviewer, for example (student5930). Click on the submitted links to start reviewing. Once review is done, the time spent is recorded in the background and saved in our database&lt;br /&gt;
# Login as an instructor. Click on assignments tab. Click on 'View Review Report' under actions for the particular assignment. In the view rendered we expect the new content of time spent by the reviewers to be visible&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Manual Testing for Verification:''' &lt;br /&gt;
#When user clicks on a submitted link, it opens up in a new window.&lt;br /&gt;
#To verify if the time displayed in the response_report view matches with the actual time spent by the reviewer for all reviews.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow_diagram.PNG&amp;diff=105735</id>
		<title>File:Flow diagram.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow_diagram.PNG&amp;diff=105735"/>
		<updated>2016-11-14T23:49:11Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105733</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105733"/>
		<updated>2016-11-14T23:46:00Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* changed the flow diagram*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows students to learn from each other work. &lt;br /&gt;
#It provides a dual benefit for both the reviewer and the writer as they are introduced to a different set of eyes on the code&lt;br /&gt;
#It might expose edge cases not previously thought of&lt;br /&gt;
#It helps instructors review a project faster&lt;br /&gt;
#It emphasizes the importance of writing in such a way that it's easy for a third person to read and understand&lt;br /&gt;
In order to assess and analyze quality of reviews, we want to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. To assess and improve review qualities, the purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g. GitHub and Youtube use cases&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach and Implementation'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps to follow for all external links (Github, YouTube etc)'''===&lt;br /&gt;
On clicking a submitted link available in '''submitted_content/submitted_files.html.erb''', a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. &amp;lt;br/&amp;gt;&lt;br /&gt;
Our solution is to embed the submissions (done on an external website) within the peer assessment system itself using e.g., '''IFrame''' or '''Embed''' tag. &lt;br /&gt;
We shall include two new javascript files - '''TimeMe.js''' and '''IfVisible.js''' to keep track of open submission links and time spent viewing them. &amp;lt;br/&amp;gt; The following are the steps that will be followed to keep track of the time: &lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Time is saved into the database when the user saves, submits review or closes the popped-up window&lt;br /&gt;
##If the corresponding entry already exists, the value of the time column is updated otherwise it is created&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Behaviour Diagram''' :&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Flow.jpg|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Instructor can now view the times taken for reviewers by reviewer in the Review report summary. This report is rendered by partial '''review_mapping/_review_report.html.erb'''. We shall modify this view to record the times spent by the reviewer per review round for each assignment. For example - 15.32/12.67 indicates that reviewer spent 15.32 minutes on round 1 review and 12.67 minutes on round 2 review.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Modified View''' :&amp;lt;br/&amp;gt;&lt;br /&gt;
review_mapping/_review_report.html.erb will be modified to show the time spent in reviewing a submission. For example, the view below shows a sample modification of the view to depict the time taken in different rounds (separated by '/').[[File:ReviewReport1.png|center]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Edge cases that need to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset &lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Database Design'''===&lt;br /&gt;
The following table review_submission_timing will be created to implement a solution for this project: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Database table review submission timing.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Files to be modified/added'''===&lt;br /&gt;
#student_review/list.html.erb&lt;br /&gt;
#review_mapping/_review_report.html.erb&lt;br /&gt;
#review_mapping_helper.rb (method- get_data_for_review_report)&lt;br /&gt;
#Additionally, we will create a new model class corresponding to new database table&lt;br /&gt;
#TimeMe.js and IfVisible.js for handling timing counter&lt;br /&gt;
&lt;br /&gt;
==='''Test Plan'''===&lt;br /&gt;
'''Functional Testing using RSpec:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To test if the time spent by the reviewer on the submitted links shows up in the response_report in Instructor View. &amp;lt;br/&amp;gt;&lt;br /&gt;
# Login as a reviewer, for example (student5930). Click on the submitted links to start reviewing. Once review is done, the time spent is recorded in the background and saved in our database&lt;br /&gt;
# Login as an instructor. Click on assignments tab. Click on 'View Review Report' under actions for the particular assignment. In the view rendered we expect the new content of time spent by the reviewers to be visible&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Manual Testing for Verification:''' &lt;br /&gt;
#When user clicks on a submitted link, it opens up in a new window.&lt;br /&gt;
#To verify if the time displayed in the response_report view matches with the actual time spent by the reviewer for all reviews.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow.JPG&amp;diff=105732</id>
		<title>File:Flow.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow.JPG&amp;diff=105732"/>
		<updated>2016-11-14T23:45:05Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: Flow diagram updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flow diagram updated&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105724</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=105724"/>
		<updated>2016-11-14T23:21:00Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /*Changed the flow diagram */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows students to learn from each other work. &lt;br /&gt;
#It provides a dual benefit for both the reviewer and the writer as they are introduced to a different set of eyes on the code&lt;br /&gt;
#It might expose edge cases not previously thought of&lt;br /&gt;
#It helps instructors review a project faster&lt;br /&gt;
#It emphasizes the importance of writing in such a way that it's easy for a third person to read and understand&lt;br /&gt;
In order to assess and analyze quality of reviews, we want to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. To assess and improve review qualities, the purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g. GitHub and Youtube use cases&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach and Implementation'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps to follow for all external links (Github, YouTube etc)'''===&lt;br /&gt;
On clicking a submitted link available in '''submitted_content/submitted_files.html.erb''', a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. &amp;lt;br/&amp;gt;&lt;br /&gt;
Our solution is to embed the submissions (done on an external website) within the peer assessment system itself using e.g., '''IFrame''' or '''Embed''' tag. &lt;br /&gt;
We shall include two new javascript files - '''TimeMe.js''' and '''IfVisible.js''' to keep track of open submission links and time spent viewing them. &amp;lt;br/&amp;gt; The following are the steps that will be followed to keep track of the time: &lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Time is saved into the database when the user saves, submits review or closes the popped-up window&lt;br /&gt;
##If the corresponding entry already exists, the value of the time column is updated otherwise it is created&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Behaviour Diagram''' :&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Flow.png|center]]&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Instructor can now view the times taken for reviewers by reviewer in the Review report summary. This report is rendered by partial '''review_mapping/_review_report.html.erb'''. We shall modify this view to record the times spent by the reviewer per review round for each assignment. For example - 15.32/12.67 indicates that reviewer spent 15.32 minutes on round 1 review and 12.67 minutes on round 2 review.&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Modified View''' :&amp;lt;br/&amp;gt;[[File:ReviewReport1.png|center]] &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Edge cases that need to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset &lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Database Design'''===&lt;br /&gt;
The following table review_submission_timing will be created to implement a solution for this project: &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Database table review submission timing.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Files to be modified/added'''===&lt;br /&gt;
#submitted_content/submitted_files.html.erb&lt;br /&gt;
#review_mapping/_review_report.html.erb&lt;br /&gt;
#review_mapping_helper.rb (method- get_data_for_review_report)&lt;br /&gt;
#Additionally, we will create a new model class corresponding to new database table&lt;br /&gt;
#TimeMe.js and IfVisible.js for handling timing counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Test Plan'''===&lt;br /&gt;
'''Functional Testing using RSpec:'''&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
To test if the time spent by the reviewer on the submitted links shows up in the response_report in Instructor View. &amp;lt;br/&amp;gt;&lt;br /&gt;
# Login as a reviewer, for example (student5930). Click on the submitted links to start reviewing. Once review is done, the time spent is recorded in the background and saved in our database&lt;br /&gt;
# Login as an instructor. Click on assignments tab. Click on 'View Review Report' under actions for the particular assignment. In the view rendered we expect the new content of time spent by the reviewers to be visible&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
'''Manual Testing for Verification:''' &lt;br /&gt;
#When user clicks on a submitted link, it opens up in a new window.&lt;br /&gt;
#To verify if the time displayed in the response_report view matches with the actual time spent by the reviewer for all reviews.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow.png&amp;diff=105723</id>
		<title>File:Flow.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Flow.png&amp;diff=105723"/>
		<updated>2016-11-14T23:20:12Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: uploaded a new version of &amp;amp;quot;File:Flow.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104812</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104812"/>
		<updated>2016-11-09T01:34:35Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Edge cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows them to learn from each other work. In order to help them to do this, we have to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. The purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g.,&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes.&lt;br /&gt;
#Design and implement a solution that handles GitHub and Youtube use cases&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps'''===&lt;br /&gt;
On clicking a submitted link, a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. Another approach of using an iframe, as mentioned in the design documents, was thought of but the non-user-friendly appearance of having to scroll through it in all directions to view the page properly was the primary reason for dropping it. The following are the steps that will be followed to keep track of the time:&lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Stop the time when the user closes the window or submits&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Edge cases that need to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset. &lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104811</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104811"/>
		<updated>2016-11-09T01:34:06Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Edge cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows them to learn from each other work. In order to help them to do this, we have to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. The purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g.,&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes.&lt;br /&gt;
#Design and implement a solution that handles GitHub and Youtube use cases&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps'''===&lt;br /&gt;
On clicking a submitted link, a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. Another approach of using an iframe, as mentioned in the design documents, was thought of but the non-user-friendly appearance of having to scroll through it in all directions to view the page properly was the primary reason for dropping it. The following are the steps that will be followed to keep track of the time:&lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Stop the time when the user closes the window or submits&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Some of  the edge cases that needs to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset. &lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104810</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104810"/>
		<updated>2016-11-09T01:33:35Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Edge cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows them to learn from each other work. In order to help them to do this, we have to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. The purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g.,&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that opens submitted files in views/response/_submitted_files.html.erb so that when the user clicks on the link, it opens a popup window that shows the submission, record time when it opens and closes.&lt;br /&gt;
#Design and implement a solution that handles GitHub and Youtube use cases&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Steps'''===&lt;br /&gt;
On clicking a submitted link, a new window will pop-up that will keep track of the time spent on that new window. This can be a link to any of the above-mentioned submissions. Another approach of using an iframe, as mentioned in the design documents, was thought of but the non-user-friendly appearance of having to scroll through it in all directions to view the page properly was the primary reason for dropping it. The following are the steps that will be followed to keep track of the time:&lt;br /&gt;
#Start the time when a user clicks on the submitted link (a new window pops-up)&lt;br /&gt;
#We'll pause the time in the following cases:&lt;br /&gt;
##User idle for more than 30sec&lt;br /&gt;
##User switched tabs&lt;br /&gt;
##User minimized the window&lt;br /&gt;
#Resume time when:&lt;br /&gt;
##User switches back to this window&lt;br /&gt;
##User performs some activity after being idle&lt;br /&gt;
#Stop the time when the user closes the window or submits&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==='''Edge cases'''===&lt;br /&gt;
&lt;br /&gt;
Some of  the edge cases that needs to be handled :&lt;br /&gt;
&lt;br /&gt;
#What happens when the user refreshes the window : It will set the timer back to 0 and the time spent on that page will be reset. &lt;br /&gt;
&lt;br /&gt;
#What happens when the user downloads the submission: If the user downloads any solution and then opens it in his/her local machine, then the time spent on that can't be tracked.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104803</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104803"/>
		<updated>2016-11-09T00:41:47Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Types of submissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows them to learn from each other work. In order to help them to do this, we have to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. The purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g.,&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that open submitted files in views/response/_submitted_files.html.erb so that when the user click on the link, it opens a popup window that shows the submission, record time when it opens and closes.&lt;br /&gt;
#Design and implement a solution that handle GitHub and Youtube use cases&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
#GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
#Youtube videos &lt;br /&gt;
#Wikipages&lt;br /&gt;
#Text document/doc/pdf/ppt&lt;br /&gt;
#Images - png/jpg&lt;br /&gt;
#Downloadable contents&lt;br /&gt;
&lt;br /&gt;
==='''Steps'''===&lt;br /&gt;
==='''Edge cases'''===&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104802</id>
		<title>CSC/ECE 517 Fall 2016/E1705. Tracking the time students look at the others' submissions</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/E1705._Tracking_the_time_students_look_at_the_others%27_submissions&amp;diff=104802"/>
		<updated>2016-11-09T00:41:03Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Types of submissions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Introduction'''==&lt;br /&gt;
==='''Purpose'''===&lt;br /&gt;
Expertiza provides the functionality of peer reviews. The best advantage of peer review for the students is that it allows them to learn from each other work. In order to help them to do this, we have to be able to track the time that students spend observing the other's work. Unfortunately, most peer assessment systems do not manage the content of students’ submission within the systems. They usually allow the authors submit external links to the submission, which makes it difficult for the system to track the time that the reviewers spend on the submissions. The purpose of the project is to be able to successfully track the time that each student spends on peer reviewing the work.&lt;br /&gt;
&lt;br /&gt;
==='''What needs to be done'''===&lt;br /&gt;
#Design a database schema for logging the time a reviewer spend on a submission&lt;br /&gt;
#Design and implement a solution that handles the use case, where students’ submissions are hosted on an external website e.g.,&lt;br /&gt;
#Modify the reviewer interface in expertiza to accommodate your solution e.g., change the link that open submitted files in views/response/_submitted_files.html.erb so that when the user click on the link, it opens a popup window that shows the submission, record time when it opens and closes.&lt;br /&gt;
#Design and implement a solution that handle GitHub and Youtube use cases&lt;br /&gt;
#Modify Review report (views/review_mapping/_review_report.html.erb) to show the time spent on each submission&lt;br /&gt;
&lt;br /&gt;
=='''Approach'''==&lt;br /&gt;
==='''Types of submissions'''===&lt;br /&gt;
&lt;br /&gt;
Based on each submission type, we need to handle the tracking functionalities differently. Generally, the submission links can be one of the following:&lt;br /&gt;
1) GitHub project/repository link , GitHub Pull requests link or Deployment link&lt;br /&gt;
2) Youtube videos &lt;br /&gt;
3) Wikipages&lt;br /&gt;
4) Text document/doc/pdf/ppt&lt;br /&gt;
5) Images - png/jpg&lt;br /&gt;
6) Downloadable contents&lt;br /&gt;
&lt;br /&gt;
==='''Steps'''===&lt;br /&gt;
==='''Edge cases'''===&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review_1.png&amp;diff=102967</id>
		<title>File:Self review 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review_1.png&amp;diff=102967"/>
		<updated>2016-10-28T20:44:11Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving_1.png&amp;diff=102965</id>
		<title>File:Saving 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving_1.png&amp;diff=102965"/>
		<updated>2016-10-28T20:43:54Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review.png&amp;diff=102961</id>
		<title>File:Self review.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review.png&amp;diff=102961"/>
		<updated>2016-10-28T20:42:04Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: uploaded a new version of &amp;amp;quot;File:Self review.png&amp;amp;quot;: self-review.png -resized&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Changes in _self_review partial&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving.png&amp;diff=102956</id>
		<title>File:Saving.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving.png&amp;diff=102956"/>
		<updated>2016-10-28T20:41:22Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: uploaded a new version of &amp;amp;quot;File:Saving.png&amp;amp;quot;: Saving file- resized&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;changes in saving method&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102746</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102746"/>
		<updated>2016-10-28T16:11:14Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: added file names&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method which is too long and hard to read.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
5)  Added functional test for update_method of response controller&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented and Delivered ==&lt;br /&gt;
&lt;br /&gt;
==='''Refactor the update method'''===&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and unreadable. It was checking the type of @map and round parameter to find out questionnaire  using long if..elseif..else ladder, which did not look neat and elegant. There was a helper method 'set_questionnaire' which was being called indirectly by the edit method for retrieving the questionnaire.We called the same function. The intuition behind using this same method was that if it is an update, user is not filling a new rubric and the response object should be available.We can find the questionnaire from the question_id in answers.Hence, in this way the if-else block was eliminated by calling the already available function.&lt;br /&gt;
Similarly, there were lines of code,which were creating score if not found or updating if an entry exists. The function 'create_answers' does exactly the same. Abiding by the DRY principle, we called this function which made the update method look concise and simplified. &amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
==='''Refactor the saving method'''===&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when a user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
app -&amp;gt; controllers -&amp;gt; respose_controller.rb -&amp;gt; def saving &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:saving.png]]&lt;br /&gt;
&lt;br /&gt;
app -&amp;gt; views -&amp;gt; submitted_content -&amp;gt; _self_review.html.erb&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:_self_review.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Move new_feedback method from ResponseController to ReviewMappingController'''===&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier which was rather suspect. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with FeedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Response_controller_rb.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Review mapping controller.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Modified functional tests for new_feedback method'''===&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
Also added new test case for update method to test if it located the requested response.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102742</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102742"/>
		<updated>2016-10-28T16:08:20Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Added screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method which is too long and hard to read.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
5)  Added functional test for update_method of response controller&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented and Delivered ==&lt;br /&gt;
&lt;br /&gt;
==='''Refactor the update method'''===&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and unreadable. It was checking the type of @map and round parameter to find out questionnaire  using long if..elseif..else ladder, which did not look neat and elegant. There was a helper method 'set_questionnaire' which was being called indirectly by the edit method for retrieving the questionnaire.We called the same function. The intuition behind using this same method was that if it is an update, user is not filling a new rubric and the response object should be available.We can find the questionnaire from the question_id in answers.Hence, in this way the if-else block was eliminated by calling the already available function.&lt;br /&gt;
Similarly, there were lines of code,which were creating score if not found or updating if an entry exists. The function 'create_answers' does exactly the same. Abiding by the DRY principle, we called this function which made the update method look concise and simplified. &amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
==='''Refactor the saving method'''===&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when a user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
controllers -&amp;gt; respose_controller.rb -&amp;gt; def saving &amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:saving.png]]&lt;br /&gt;
&lt;br /&gt;
Views -&amp;gt; submitted_content -&amp;gt; _self_review.html.erb&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:_self_review.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Move new_feedback method from ResponseController to ReviewMappingController'''===&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier which was rather suspect. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with FeedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Response_controller_rb.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Review mapping controller.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Modified functional tests for new_feedback method'''===&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
Also added new test case for update method to test if it located the requested response.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102740</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102740"/>
		<updated>2016-10-28T16:04:34Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Refactor the saving method */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method which is too long and hard to read.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
5)  Added functional test for update_method of response controller&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Solutions Implemented and Delivered ==&lt;br /&gt;
&lt;br /&gt;
==='''Refactor the update method'''===&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and unreadable. It was checking the type of @map and round parameter to find out questionnaire  using long if..elseif..else ladder, which did not look neat and elegant. There was a helper method 'set_questionnaire' which was being called indirectly by the edit method for retrieving the questionnaire.We called the same function. The intuition behind using this same method was that if it is an update, user is not filling a new rubric and the response object should be available.We can find the questionnaire from the question_id in answers.Hence, in this way the if-else block was eliminated by calling the already available function.&lt;br /&gt;
Similarly, there were lines of code,which were creating score if not found or updating if an entry exists. The function 'create_answers' does exactly the same. Abiding by the DRY principle, we called this function which made the update method look concise and simplified. &amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
==='''Refactor the saving method'''===&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when a user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:saving.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Move new_feedback method from ResponseController to ReviewMappingController'''===&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier which was rather suspect. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with FeedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Response_controller_rb.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Review mapping controller.png]]&lt;br /&gt;
&lt;br /&gt;
==='''Modified functional tests for new_feedback method'''===&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
Also added new test case for update method to test if it located the requested response.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review.png&amp;diff=102735</id>
		<title>File:Self review.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Self_review.png&amp;diff=102735"/>
		<updated>2016-10-28T16:00:36Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: Changes in _self_review partial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Changes in _self_review partial&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving.png&amp;diff=102733</id>
		<title>File:Saving.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Saving.png&amp;diff=102733"/>
		<updated>2016-10-28T15:57:59Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: changes in saving method&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;changes in saving method&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102575</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102575"/>
		<updated>2016-10-27T23:46:51Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Testing Details_removed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method to improve the functionality of checking the @map type.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solutions Implemented and Delivered ===&lt;br /&gt;
&lt;br /&gt;
*Refactor the update method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and hard to read. It was checking the type of @map and performing various operations based on it using long if..elseif..else ladder. We implemented a function call to perform the type check operation, thus simplified the update method&amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
*Refactor the saving method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Move new_feedback method from ResponseController to ReviewMappingController&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with feedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102536</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102536"/>
		<updated>2016-10-27T21:26:42Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* Scope for future improvement_removed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method to improve the functionality of checking the @map type.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solutions Implemented and Delivered ===&lt;br /&gt;
&lt;br /&gt;
*Refactor the update method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and hard to read. It was checking the type of @map and performing various operations based on it using long if..elseif..else ladder. We implemented a function call to perform the type check operation, thus simplified the update method&amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
*Refactor the saving method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Move new_feedback method from ResponseController to ReviewMappingController&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with feedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There were no existing test cases for the GradesController. We have added a new spec file 'grades_spec.rb' which covers testing scenario for the newly added method. The specs were run on the previous and current files and they return the same results implying that the refactored code does not break anything.&lt;br /&gt;
As the model was not changed, no test cases were added for the model.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code from UI:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. Login as instructor. Create a course and an assignment under that course.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Keep the has team checkbox checked while creating the assignment. Add a grading rubric to it. Add at least two students as participants to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Create topics for the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Sign in as one of the students who were added to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Go to the assignment and sign up for a topic.&amp;lt;br/&amp;gt;&lt;br /&gt;
6. Submit student's work by clicking 'Your work' under that assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
7. Sign in as a different student which is participant of the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
8. Go to Assignments--&amp;gt;&amp;lt;assignment name&amp;gt;--&amp;gt;Others' work (If the link is disabled, login as instructor and change the due date of the assignment to current time).&amp;lt;br/&amp;gt;&lt;br /&gt;
9. Give reviews on first student's work.&amp;lt;br/&amp;gt;&lt;br /&gt;
10. Login as instructor or first student to look at the review grades.&amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102534</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102534"/>
		<updated>2016-10-27T21:23:53Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* What needs to be done */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  Refactor the update method -to improve the functionality of checking the @map type.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  Refactor the saving method -to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solutions Implemented and Delivered ===&lt;br /&gt;
&lt;br /&gt;
*Refactor the update method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and hard to read. It was checking the type of @map and performing various operations based on it using long if..elseif..else ladder. We implemented a function call to perform the type check operation, thus simplified the update method&amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
*Refactor the saving method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Move new_feedback method from ResponseController to ReviewMappingController&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with feedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There were no existing test cases for the GradesController. We have added a new spec file 'grades_spec.rb' which covers testing scenario for the newly added method. The specs were run on the previous and current files and they return the same results implying that the refactored code does not break anything.&lt;br /&gt;
As the model was not changed, no test cases were added for the model.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code from UI:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. Login as instructor. Create a course and an assignment under that course.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Keep the has team checkbox checked while creating the assignment. Add a grading rubric to it. Add at least two students as participants to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Create topics for the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Sign in as one of the students who were added to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Go to the assignment and sign up for a topic.&amp;lt;br/&amp;gt;&lt;br /&gt;
6. Submit student's work by clicking 'Your work' under that assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
7. Sign in as a different student which is participant of the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
8. Go to Assignments--&amp;gt;&amp;lt;assignment name&amp;gt;--&amp;gt;Others' work (If the link is disabled, login as instructor and change the due date of the assignment to current time).&amp;lt;br/&amp;gt;&lt;br /&gt;
9. Give reviews on first student's work.&amp;lt;br/&amp;gt;&lt;br /&gt;
10. Login as instructor or first student to look at the review grades.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope for future improvement ==&lt;br /&gt;
1. The construct_table method in GradesHelper is not used anywhere. It has no reference in the project. So we feel it can be safely removed.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. The has_team_and_metareview? method in GradesHelper can be broken down into separate methods, one each for team and metareview. This will provide improved flexibility. It needs some analysis though, as both the entities(team &amp;amp; metareview) are currently checked in conjuction from all the views they are referenced from.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102532</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102532"/>
		<updated>2016-10-27T21:22:24Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* What we changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This wiki page describes changes made under E1639 OSS project assignment for Fall 2016, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application for educational purposes. It is an open source project based on Ruby on Rails framework. Expertiza has been created and maintained by faculty and students of NCSU. It helps teachers set up assignments for students who can then make submissions. Students can also review work of other students and give feedback to help incorporate improvements.&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
The following OSS project deals mainly with the ResponseController. The goal of this project is make the code more readable, maintainable and to improve elegance of the code. We would like ResponseController to adhere to the DRY principle. &lt;br /&gt;
It focuses on refactoring some of the more complex methods and removing some redundant code. At present, ResponseController has methods that would better be located in other controllers. The project relocates such methods to its appropriate Controller class.&lt;br /&gt;
&lt;br /&gt;
== Files modified ==&lt;br /&gt;
&lt;br /&gt;
Following files were mainly modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. response_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
2. response_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
3. review_mapping_controller.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
4. review_mapping_controller_spec.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
5. routes.rb &amp;lt;br/&amp;gt;&lt;br /&gt;
6. _reviews.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
7. _scores_submitted_work.html.erb &amp;lt;br/&amp;gt;&lt;br /&gt;
8. _self_review.html.erb&lt;br /&gt;
&lt;br /&gt;
== ResponseController ==&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ResponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
== What needs to be done ==&lt;br /&gt;
1)  : Refactor the update method -to improve the functionality of checking the @map type.&amp;lt;br/&amp;gt;&lt;br /&gt;
2)  : Refactor the saving method -to improve the case handling of selfReviewResponseMap&amp;lt;br/&amp;gt;&lt;br /&gt;
3)  : Move new_feedback method from ResponseController to ReviewMappingController - ResponseController should only handle one kind of object&amp;lt;br/&amp;gt;&lt;br /&gt;
4)  : Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Solutions Implemented and Delivered ===&lt;br /&gt;
&lt;br /&gt;
*Refactor the update method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update method is called when any kind of response is edited by the user. This method was very long and hard to read. It was checking the type of @map and performing various operations based on it using long if..elseif..else ladder. We implemented a function call to perform the type check operation, thus simplified the update method&amp;lt;br/&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
*Refactor the saving method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Saving method is called to save the response when user edits any particular response or creates one. It was assigning params[:returs] to 'selfview' if the @map type is selfReponseMap. This params[:return] value was then further used in redirection method to handle the selfReviewResponseMap separately. We removed the assignment params[:return]= &amp;quot;selfreview&amp;quot; from save method. Rather we are directly passing the :return parameter value from edit and new methods of _self_review.html.erb, a view of SubmittedContent controller which handles the selfReview functionality.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Move new_feedback method from ResponseController to ReviewMappingController&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
new_feedback method is called when a user provides author feedback for any review. It was defined in the ResponseController earlier. We moved the method to ReviewMappingController since ResponseController should only handle Response object, while new_feedback is dealing with feedbackResponseMap object.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Modified functional tests for new_feedback method&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We modified the test cases to accommodate changes of the new_feedback method and created new rspec file review_mapping_controller_rspec.rb&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There were no existing test cases for the GradesController. We have added a new spec file 'grades_spec.rb' which covers testing scenario for the newly added method. The specs were run on the previous and current files and they return the same results implying that the refactored code does not break anything.&lt;br /&gt;
As the model was not changed, no test cases were added for the model.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code from UI:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. Login as instructor. Create a course and an assignment under that course.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Keep the has team checkbox checked while creating the assignment. Add a grading rubric to it. Add at least two students as participants to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Create topics for the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Sign in as one of the students who were added to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Go to the assignment and sign up for a topic.&amp;lt;br/&amp;gt;&lt;br /&gt;
6. Submit student's work by clicking 'Your work' under that assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
7. Sign in as a different student which is participant of the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
8. Go to Assignments--&amp;gt;&amp;lt;assignment name&amp;gt;--&amp;gt;Others' work (If the link is disabled, login as instructor and change the due date of the assignment to current time).&amp;lt;br/&amp;gt;&lt;br /&gt;
9. Give reviews on first student's work.&amp;lt;br/&amp;gt;&lt;br /&gt;
10. Login as instructor or first student to look at the review grades.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope for future improvement ==&lt;br /&gt;
1. The construct_table method in GradesHelper is not used anywhere. It has no reference in the project. So we feel it can be safely removed.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. The has_team_and_metareview? method in GradesHelper can be broken down into separate methods, one each for team and metareview. This will provide improved flexibility. It needs some analysis though, as both the entities(team &amp;amp; metareview) are currently checked in conjuction from all the views they are referenced from.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102523</id>
		<title>CSC/ECE 517 Fall 2016/oss E1639</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/oss_E1639&amp;diff=102523"/>
		<updated>2016-10-27T20:08:30Z</updated>

		<summary type="html">&lt;p&gt;Rbhatt: /* ResponseController */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== '''E1639 - Refactor response_controller.rb''' ==&lt;br /&gt;
&lt;br /&gt;
This wiki page is for the description of changes made under E1555 OSS assignment for Fall 2015, CSC/ECE 517.&lt;br /&gt;
&lt;br /&gt;
== Peer Review Information ==&lt;br /&gt;
&lt;br /&gt;
For users intending to view the deployed Expertiza associated with this assignment, the credentials are below:&lt;br /&gt;
* Instructor login: username -&amp;gt; instructor6,  password -&amp;gt; password&lt;br /&gt;
* Student  login: username -&amp;gt; student4340,  password -&amp;gt; password &lt;br /&gt;
* Student login: username -&amp;gt; student4405,  password -&amp;gt; password&lt;br /&gt;
&lt;br /&gt;
== Expertiza Background==&lt;br /&gt;
&lt;br /&gt;
Expertiza is an educational web application created and maintained by the joint efforts of the students and  the faculty at NCSU. It’s an open source project developed on Ruby on Rails platform and it’s code is available on Github. It allows students to review each other’s work and improve their work upon this feedback.&lt;br /&gt;
&lt;br /&gt;
== Description of the current project ==&lt;br /&gt;
&lt;br /&gt;
The following is an Expertiza based OSS project which deals primarily with the GradesController and GradesHelper. It focusses on refactoring some of the more complex methods, modifying some of the language to make it more Ruby friendly, removing some redundant code. The goal of this project is to attempt to make this part of the application easier to read and maintain.&lt;br /&gt;
&lt;br /&gt;
== Files modified in current project ==&lt;br /&gt;
&lt;br /&gt;
A controller and a helper file were modified for this project namely:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. GradesController &amp;lt;br/&amp;gt;&lt;br /&gt;
2. GradesHelper &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ResponseController ===&lt;br /&gt;
 &lt;br /&gt;
Response controller manages the responses entered by users. When a user fills out any kind of rubric (review rubrics,author-feedback rubrics,teammate-review rubrics,quizzes,surveys), a response is generated. Responses come in different versions. Any time an author revises his/her work, and the reviewer reviews it again, a separate Response object is generated.Each Response object points to a particular ReponseMap, which provides details about reviewer, reviewee and reviewed entity.&lt;br /&gt;
&lt;br /&gt;
=== GradesHelper ===&lt;br /&gt;
&lt;br /&gt;
This is a helper class which contains methods for constructing a table(construct_table) and to check whether an assignment has a team and metareveiw(has_team_and_metareview)&lt;br /&gt;
&lt;br /&gt;
== List of changes ==&lt;br /&gt;
We worked on the following work items(WIs)&amp;lt;br/&amp;gt;&lt;br /&gt;
WI1 : Refactor calculate_all_penalties method into smaller methods&amp;lt;br/&amp;gt;&lt;br /&gt;
WI2 : Move the repeated code in conflict_notification &amp;amp; edit methods to a separate method list_questions.&amp;lt;br/&amp;gt;&lt;br /&gt;
WI3 : Refactor the code as per the Ruby style guidelines and incorporate the good practices&amp;lt;br/&amp;gt;&lt;br /&gt;
WI4 : Test the conflict_notification method to test the changes made.&amp;lt;br/&amp;gt;&lt;br /&gt;
WI5 : Move the repeated code in view and view_my_scores methods to a separate method retrieve_questions&lt;br /&gt;
&lt;br /&gt;
=== Solutions Implemented and Delivered ===&lt;br /&gt;
&lt;br /&gt;
*Refactoring calculate_all_penalties method&lt;br /&gt;
&lt;br /&gt;
This is used to calculate various penalty values for each assignment if penalty is applicable.&lt;br /&gt;
&lt;br /&gt;
The following changes were made:&lt;br /&gt;
&lt;br /&gt;
1. This method was very complex, performing too many functions within a single method and had to be broken into 3 smaller methods each having a more well defined function.&lt;br /&gt;
2. The following 3 methods were created after splitting the first method&amp;lt;br&amp;gt;&lt;br /&gt;
   i.  calculate_all_penalties&amp;lt;br&amp;gt;&lt;br /&gt;
   ii. calculate_penatly_attributes&amp;lt;br&amp;gt;&lt;br /&gt;
   iii. assign_all_penalties&amp;lt;br&amp;gt;&lt;br /&gt;
3. Changes were also made to make the code follow ruby style.The language was made more ruby friendly.&lt;br /&gt;
4. Finally some redundant code was commented out as it was non-functional.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Refactoring into smaller more specific methods:&lt;br /&gt;
&lt;br /&gt;
[[File:Change6_new.png]]&lt;br /&gt;
&lt;br /&gt;
Removal of non-functional code :&lt;br /&gt;
&lt;br /&gt;
[[File:Change5_new.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Change of language to make it more Ruby friendly:&lt;br /&gt;
&lt;br /&gt;
[[File:Change1_new.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Move the redundant piece of code from conflict_notification &amp;amp; edit methods to a new method list_questions &lt;br /&gt;
&lt;br /&gt;
The conflict_notification method is used to help the instructors decide if one of the reviews are unfair or inaccurate.&lt;br /&gt;
This was again split into 2 methods with some part of the code which is repeated in another method  refactored into a new method.&lt;br /&gt;
&lt;br /&gt;
[[File:Change3_new.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refactored #Created a method which was a duplicate in conflict_notification and edit methods&lt;br /&gt;
  &lt;br /&gt;
[[File:Change4_new.png]]&lt;br /&gt;
&lt;br /&gt;
edit method:&lt;br /&gt;
&lt;br /&gt;
This method is used to edit the questionnaires. This method again has code which is repeated in the conflict_notification method and thus the repeated section was split into a new method.&lt;br /&gt;
&lt;br /&gt;
[[File:Change2_new.png]]&lt;br /&gt;
&lt;br /&gt;
New method:&lt;br /&gt;
Refactored #Created a method which was a duplicate in conflict_notification and edit methods&lt;br /&gt;
&lt;br /&gt;
[[File:Change4_new.png]]&lt;br /&gt;
&lt;br /&gt;
Similar refactoring was performed to obtain the retrieve_questions method:&lt;br /&gt;
&lt;br /&gt;
[[File:Latest1.png]]&lt;br /&gt;
&lt;br /&gt;
This is the new method created after the above refactoring:&lt;br /&gt;
&lt;br /&gt;
[[File:Latest2.png]]&lt;br /&gt;
&lt;br /&gt;
== Testing Details==&lt;br /&gt;
&lt;br /&gt;
=== RSpec ===&lt;br /&gt;
There were no existing test cases for the GradesController. We have added a new spec file 'grades_spec.rb' which covers testing scenario for the newly added method. The specs were run on the previous and current files and they return the same results implying that the refactored code does not break anything.&lt;br /&gt;
As the model was not changed, no test cases were added for the model.&lt;br /&gt;
&lt;br /&gt;
=== UI Testing ===&lt;br /&gt;
&lt;br /&gt;
Following steps needs to be performed to test this code from UI:&amp;lt;br/&amp;gt;&lt;br /&gt;
1. Login as instructor. Create a course and an assignment under that course.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. Keep the has team checkbox checked while creating the assignment. Add a grading rubric to it. Add at least two students as participants to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
3. Create topics for the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
4. Sign in as one of the students who were added to the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
5. Go to the assignment and sign up for a topic.&amp;lt;br/&amp;gt;&lt;br /&gt;
6. Submit student's work by clicking 'Your work' under that assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
7. Sign in as a different student which is participant of the assignment.&amp;lt;br/&amp;gt;&lt;br /&gt;
8. Go to Assignments--&amp;gt;&amp;lt;assignment name&amp;gt;--&amp;gt;Others' work (If the link is disabled, login as instructor and change the due date of the assignment to current time).&amp;lt;br/&amp;gt;&lt;br /&gt;
9. Give reviews on first student's work.&amp;lt;br/&amp;gt;&lt;br /&gt;
10. Login as instructor or first student to look at the review grades.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Scope for future improvement ==&lt;br /&gt;
1. The construct_table method in GradesHelper is not used anywhere. It has no reference in the project. So we feel it can be safely removed.&amp;lt;br/&amp;gt;&lt;br /&gt;
2. The has_team_and_metareview? method in GradesHelper can be broken down into separate methods, one each for team and metareview. This will provide improved flexibility. It needs some analysis though, as both the entities(team &amp;amp; metareview) are currently checked in conjuction from all the views they are referenced from.&lt;/div&gt;</summary>
		<author><name>Rbhatt</name></author>
	</entry>
</feed>