<?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=Mshaikh</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=Mshaikh"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Mshaikh"/>
	<updated>2026-06-06T23:51:52Z</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_E1709_Visualizations_for_instructors&amp;diff=106396</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106396"/>
		<updated>2016-12-03T05:12:48Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
* We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
* From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
* From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106395</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106395"/>
		<updated>2016-12-03T05:12:22Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Pull Request and Demo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
** We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106394</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106394"/>
		<updated>2016-12-03T05:11:59Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Pull Request and Demo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
** We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106393</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106393"/>
		<updated>2016-12-03T05:11:32Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
** We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106392</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106392"/>
		<updated>2016-12-03T05:10:43Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups(Final Versions) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
** We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106391</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106391"/>
		<updated>2016-12-03T05:10:17Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Implementation Thoughts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
This report is an enhancement of the review report.&lt;br /&gt;
&lt;br /&gt;
* A new metric filter is provided so that the instructor can select the average author feedback, average length of comments, check and open the file if it is added by the reviewer.&lt;br /&gt;
* For the above implementation we have modified the following files: /app/views/_review_report.html.erb, app/controller/review_mapping_controller.rb, app/helper/review_mapping_helper.rb.&lt;br /&gt;
* The instructor can now also sort the reviewer by the name.&lt;br /&gt;
** We have taken the data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered in &amp;quot;/app/views/_review_report.html.erb&amp;quot;.&lt;br /&gt;
*Hyperlinks are provided where necessary, so that the instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups(Final Versions) ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza1.png&amp;diff=106387</id>
		<title>File:Expertiza1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza1.png&amp;diff=106387"/>
		<updated>2016-12-03T04:48:51Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106385</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106385"/>
		<updated>2016-12-03T04:47:09Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Final Design====&lt;br /&gt;
* When the instructor will select the show review report, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Expertiza1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups(Final Versions) ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza1.PNG&amp;diff=106382</id>
		<title>File:Expertiza1.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Expertiza1.PNG&amp;diff=106382"/>
		<updated>2016-12-03T04:45:53Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106380</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106380"/>
		<updated>2016-12-03T04:43:27Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Pull Request and Demo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups(Final Versions) ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870.&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106379</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106379"/>
		<updated>2016-12-03T04:42:55Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Pull Request and Demo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups(Final Versions) ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the Review report can be seen here: https://www.youtube.com/watch?v=mRgT9vdIizk&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/870&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106376</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=106376"/>
		<updated>2016-12-03T04:39:27Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups(Final Versions) ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Image11.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can select various rubric questions used for evaluation of that assignment.&lt;br /&gt;
&lt;br /&gt;
[[File:Image22.png]]&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon, it will take the instructor to the page shown below where the instructor can see the performance of the class based on various selected rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Image33.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, we have finally implemented the following:&lt;br /&gt;
&lt;br /&gt;
* We added a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We added the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a number of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we added here routes to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view receives the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller gets all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It then gets a list of all the rubrics used in those questionnaires from the ''Questions'' model. These are displayed to the instructor. It then routes the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers of those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
==== Pull Request and Demo ====&lt;br /&gt;
&lt;br /&gt;
The demo for the class performance report can be seen here: https://youtu.be/_fp4YYCgY2w&lt;br /&gt;
The pull request is here: https://github.com/expertiza/expertiza/pull/861&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can any number of rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105816</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105816"/>
		<updated>2016-11-15T01:48:41Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Use Cases */ Capybara&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MockUps2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon it will take the instructor to the page shown below where instructor can see the performance of the class based on various rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockups3.png]]&lt;br /&gt;
&lt;br /&gt;
* The instructor can select the round 1 or round 2 from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
* '''RSpec''': RSpec is a behavior design development framework which is used for testing the functionality of the system.&lt;br /&gt;
* ''' Capybara''': We will be using capybara for automation of the manual test cases written in RSpec.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105815</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105815"/>
		<updated>2016-11-15T01:43:56Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Use Cases */ Rspec&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MockUps2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon it will take the instructor to the page shown below where instructor can see the performance of the class based on various rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockups3.png]]&lt;br /&gt;
&lt;br /&gt;
* The instructor can select the round 1 or round 2 from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
* '''RSpec''': RSpec is a behavior design development framework which is used for testing the functionality of the system.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105309</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105309"/>
		<updated>2016-11-10T04:26:09Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MockUps2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Once you click on the graph icon it will take the instructor to the page shown below where instructor can see the performance of the class based on various rubric questions.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockups3.png]]&lt;br /&gt;
&lt;br /&gt;
* The instructor can select the round 1 or round 2 from the drop-down menu.&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mockups3.png&amp;diff=105308</id>
		<title>File:Mockups3.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mockups3.png&amp;diff=105308"/>
		<updated>2016-11-10T04:25:10Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Mockups3.PNG&amp;diff=105301</id>
		<title>File:Mockups3.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Mockups3.PNG&amp;diff=105301"/>
		<updated>2016-11-10T04:16:49Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105261</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105261"/>
		<updated>2016-11-10T03:18:01Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MockUps2.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:MockUps2.png&amp;diff=105260</id>
		<title>File:MockUps2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:MockUps2.png&amp;diff=105260"/>
		<updated>2016-11-10T03:17:18Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105245</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105245"/>
		<updated>2016-11-10T03:08:10Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:MockUp2.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105244</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105244"/>
		<updated>2016-11-10T03:07:46Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
* When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
[[File:MockUp2.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105238</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105238"/>
		<updated>2016-11-10T03:04:43Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
The instructor can view the class performance on assignments by clicking on the graph icon on the assignments page as shown below.&lt;br /&gt;
[[File:MockUp2.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:MockUp2.png&amp;diff=105233</id>
		<title>File:MockUp2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:MockUp2.png&amp;diff=105233"/>
		<updated>2016-11-10T03:01:58Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105133</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105133"/>
		<updated>2016-11-10T01:28:13Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Task Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table for review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105131</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105131"/>
		<updated>2016-11-10T01:27:25Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Create a new table review and author feedback report.&lt;br /&gt;
* The new table should have the following information: reviewer name, the number of reviews he has done, length of reviews, review summary, whether there is a link or a file attached, Average author feedback rating per team, Author feedback summary and a field where an instructor can give his grades and write comments.&lt;br /&gt;
* Add interactive visualization to show the class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105116</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105116"/>
		<updated>2016-11-10T00:46:47Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Add a new column to give the length of reviews.&lt;br /&gt;
* Separate data from columns number of reviews and summary details.&lt;br /&gt;
* Create a new column to check if a reviewer added a link or a file.&lt;br /&gt;
* Create a new column to check the average author feedback rating per team.&lt;br /&gt;
* Add interactive visualization to show class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
When the author will select the review and author feedback, it will show him the screen shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105115</id>
		<title>CSC/ECE 517 Fall 2016 E1709 Visualizations for instructors</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016_E1709_Visualizations_for_instructors&amp;diff=105115"/>
		<updated>2016-11-10T00:44:54Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Mockups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Expertiza&amp;lt;ref&amp;gt;https://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; is an open-source web application to create re-usable learning objects through peer-reviews to facilitate incremental learning. Students can submit learning objects such as articles, wiki pages, repository links and with the help of peer reviews, improve them. The project has been developed using the Ruby on Rails&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Ruby_on_Rails&amp;lt;/ref&amp;gt; framework and is supported by the [http://www.nsf.gov National Science Foundation].&lt;br /&gt;
&lt;br /&gt;
== Project Description ==&lt;br /&gt;
&lt;br /&gt;
=== Purpose and Scope ===&lt;br /&gt;
&lt;br /&gt;
Expertiza assignments are based on a peer review system where the instructor creates rubrics for an assignment through questionnaires which students use to review other students' submissions. The author of the submission is given an opportunity to provide feedback about these reviews. All questions in the questionnaire have an assigned grade which is based on a pre-defined grading scale. Instructors can see a report on the scores of a student given by reviewers, on the score of feedback given to the reviewers and many other reports. Based on these reports (which are all on separate pages), the instructors grade the student. These reports are, however, on separate pages and it is difficult for an instructor to navigate to many pages before grading the student. The first requirement is meant to solve this problem by merging the review scores with the author feedbacks on the same page.&lt;br /&gt;
&lt;br /&gt;
Furthermore, there is no way for an instructor to evaluate the rubric he/she has posted on assignments. Students may consistently be getting negative reviews for a rubric which might not be totally relevant to the assignment thereby reducing their scores. A report of average class scores for each rubric in the questionnaires would help instructors refactor their rubric and understand where students generally perform well and where they struggle. This new report forms the second part of the requirement.&lt;br /&gt;
&lt;br /&gt;
We are not modifying any of the existing functionalities of Expertiza. Our work would involve modifying the review report and creating a new report for average class scores.&lt;br /&gt;
&lt;br /&gt;
=== Task Description ===&lt;br /&gt;
&lt;br /&gt;
The project requires completion of the following tasks:&lt;br /&gt;
&lt;br /&gt;
* Integrate review data with author feedback data to help instructors grade the reviewers.&lt;br /&gt;
* Add a new column to give the length of reviews.&lt;br /&gt;
* Separate data from columns number of reviews and summary details.&lt;br /&gt;
* Create a new column to check if a reviewer added a link or a file.&lt;br /&gt;
* Create a new column to check the average author feedback rating per team.&lt;br /&gt;
* Add interactive visualization to show class performance of an assignment to an instructor.&lt;br /&gt;
* Create a new route/view/controller for class performance.&lt;br /&gt;
* Add a new link to point to the new controller created. This new link will be created per assignment.&lt;br /&gt;
* Create two new views, one for selecting rubric criteria and second to show the graph.&lt;br /&gt;
* Create graphs to show the class performance as per the rubric metrics selected dynamically.&lt;br /&gt;
&lt;br /&gt;
== Project Design ==&lt;br /&gt;
&lt;br /&gt;
=== Design Patterns ===&lt;br /&gt;
&lt;br /&gt;
'''Iterator Pattern&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Iterator_pattern&amp;lt;/ref&amp;gt;:'''&lt;br /&gt;
The iterator design pattern uses an iterator to traverse a container and access its elements. When we are implementing the response and author feedback report, we will be iterating through each reviewer to get the review performed by them and then each author based on the feedback given for each review. This iteration will occur with the data returned by the ResponseMap model for all of the review and feedback information. For the class performance report, we will be iterating through each questionnaire per assignment, and thereafter each question per questionnaire. The same iteration will also be required to get answers per question per reviewer.&lt;br /&gt;
&lt;br /&gt;
'''MVC Pattern&amp;lt;ref&amp;gt;https://www.tutorialspoint.com/design_pattern/mvc_pattern.htm&amp;lt;/ref&amp;gt;:''' &lt;br /&gt;
In the MVC design pattern a controller processes the request, interprets the data in model and then renders particular view.&lt;br /&gt;
For rendering response and author feedback report, we check the the data, in the form that was submitted from the UI, in the ResponseMappingController. Depending on the data, we process various models and then display a particular view.&lt;br /&gt;
&lt;br /&gt;
=== Review and Author Feedback Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
Below is the initial concept of how the page will look like.&lt;br /&gt;
&lt;br /&gt;
[[File:Mockup1.png]]&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
This report is an integration of two preexisting reports &amp;quot;Review&amp;quot;and &amp;quot;Author Feedback&amp;quot;. Thus we will be reusing a lot of components with addition of few.&lt;br /&gt;
&lt;br /&gt;
* A new option will be provided in the dropdown called as &amp;quot;Review and Author Feedback Report&amp;quot;.&lt;br /&gt;
* On submitting this form, the user is redirected to action &amp;quot;response_report&amp;quot; in controller &amp;quot;ReviewMappingController&amp;quot;.&lt;br /&gt;
* We will add new case for our requirement.&lt;br /&gt;
** We will require data from ReviewResponseMap, FeedbackResponseMap, AssignmentParticipant models.&lt;br /&gt;
** From ReviewResponseMap and AssignmentParticipant, for each reviewer we will get number of reviews completed, length of reviews, summary of reviews and whether reviewers had added a file or link for their review.&lt;br /&gt;
** From FeedbackResponseMap, we will get author feedback summary and the total score that author gave for the particular reviewer.&lt;br /&gt;
* All the above data will be rendered using a new partial &amp;quot;_response_and_feedback.html.erb&amp;quot; in &amp;quot;/app/views/review_mapping&amp;quot;. This partial is called from &amp;quot;response_report.html.haml&amp;quot;.&lt;br /&gt;
* In a similar tabular format for Review/ Author feedback report, we will show the data in a table.&lt;br /&gt;
*Hyperlinks will be provided where necessary, so instructor can view additional details. For e.g. to view review summary or author feedback summary.&lt;br /&gt;
&lt;br /&gt;
=== Class Performance Report ===&lt;br /&gt;
&lt;br /&gt;
==== Workflow ====&lt;br /&gt;
[[File:workflow3.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mockups ====&lt;br /&gt;
&lt;br /&gt;
==== Implementation Thoughts ====&lt;br /&gt;
&lt;br /&gt;
In order to implement the above functionality for the class performance report, our initial observation resulted in the following path for implementation.&lt;br /&gt;
&lt;br /&gt;
* We will need a new controller ''ClassPerformanceController''.&lt;br /&gt;
* We will need the following two new views.&lt;br /&gt;
** A view to ''select_rubrics''. This view will allow instructors to select a couple of rubrics to evaluate the class performance on.&lt;br /&gt;
** A view to ''show_class_performance''. This view will display the class performance using relevant graphs to represent the information clearly.&lt;br /&gt;
* Routes for each of the views created.&lt;br /&gt;
* Model methods to facilitate getting the required information and calculations.&lt;br /&gt;
&lt;br /&gt;
We need to provide a link to the instructor to see this view. As shown above, this will be a button in the assignment management page routed at ''tree_display/list'' which corresponds to the function ''list'' in the controller ''TreeDisplayController.rb''. The button we are adding here to route to the newly created ''select_rubrics'' view.&lt;br /&gt;
&lt;br /&gt;
The ''select_rubrics'' view will receive the following parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will get all the questionnaires related to that assignment from the ''AssignmentQuestionnaire'' model. It will then get a list of all the rubrics used in those questionnaires from the ''Questions'' model. These will be displayed to the instructor. It will then route the instructor to the ''show_class_performance'' view upon selection of rubrics. It will pass the following parameters to the ''show_class_performance'' view.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
assignment_id&lt;br /&gt;
Array[question_id]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The controller will take the list of questions for the assignment and find all the answers for those questions. It will then calculate the average score per question for the entire class from those answers and pass this to the view. The ''show_class_performance'' view will use the [https://github.com/topfunky/gruff Gruff API] in order to provide an aesthetically appealing visualization of the data.&lt;br /&gt;
&lt;br /&gt;
== Use Cases ==&lt;br /&gt;
&lt;br /&gt;
* '''View Review and Author Feedback Report as Instructor''': As an instructor, he can see the different metrics of reviews and average feedback rating received per student done for an assignment or a project.&lt;br /&gt;
* '''View Class Performance as Instructor''': As an instructor, he can select 5 rubric metrics used per assignment. The instructor is able to see the graph to check the class performance based upon the metrics selected.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
*'''For use case 1''', test if the instructor can see the text metrics of reviews and author feedbacks received for an assignment or a project per student. &lt;br /&gt;
*'''For use case 2''', test if the instructor can select 5 rubric metrics used for an assignment. Also, test if the instructor can view the class performance from a graph using the metrics selected by the instructor.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
While software and hardware requirements are the same as current Expertiza system, we will require following addition tools:&lt;br /&gt;
&lt;br /&gt;
* '''Tools:''' Gruff API in addition to the current Expertiza system.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104242</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=104242"/>
		<updated>2016-11-03T20:16:12Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high-performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a newly developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements HTML form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines a set of specifications which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on the single-thread model. The motivation behind building servo web browser is to build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source system programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe system. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original servo repository and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process, we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Test'''==&lt;br /&gt;
===Test with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
===Compile test===&lt;br /&gt;
After adding code, we compiled the servo by the following command&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build -d&lt;br /&gt;
&lt;br /&gt;
No error showed up, servo worked as expected with the new code.&lt;br /&gt;
===Test from UI===&lt;br /&gt;
At this stage, the project can't be tested from UI. There are still some subsequent steps to be implemented after this.&lt;br /&gt;
&lt;br /&gt;
===For reviewers===&lt;br /&gt;
In addition to the reasons mentioned above, the servo is a web browser and not a web application. Therefore it can't be deployed on the cloud server. All these would make it hard for reviewers to test the correctness of code at this time.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103897</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103897"/>
		<updated>2016-10-29T05:00:34Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103892</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103892"/>
		<updated>2016-10-29T04:51:59Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Implemented steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The traits for different form elements like Input text, Input submit, Input Button, Input Image are defined in htmlInputElement.rs&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*The code below will check the type of elements from the form and if they are input elements then it will call the &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt; function to check the validation.&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103887</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103887"/>
		<updated>2016-10-29T04:42:55Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: /* Design patterns &amp;amp; o-o practices */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*We implemented this trait for different form elements&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*Add code to circularly check the type of elements, if it is input elements then calls &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. Throughout the development process we tried to follow good o-o practices by following DRY, giving the elements and functions the correct names and we tried and maintained the servo and rust coding standards.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103883</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103883"/>
		<updated>2016-10-29T04:38:44Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: Added Subsequent steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project description'''==&lt;br /&gt;
===Build process===&lt;br /&gt;
* The project begin with installing and compiling the servo browser&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;. For different operating systems the dependencies are different. We installed it on Ubuntu using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 #13969]. The servo team requires only one commit so that all modifications we made are in that single commit.&lt;br /&gt;
&lt;br /&gt;
===Implemented steps===&lt;br /&gt;
*Defined a trait &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;validation.rs&amp;lt;/code&amp;gt; file that contains methods to be used for validating an html element.&lt;br /&gt;
[[File:Validatable.PNG]]&lt;br /&gt;
&lt;br /&gt;
*We implemented this trait for different form elements&lt;br /&gt;
[[File:Inputelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
*Add code to circularly check the type of elements, if it is input elements then calls &amp;lt;code&amp;gt;is_instance_validatable&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:Formelement.PNG]]&lt;br /&gt;
&lt;br /&gt;
===Challenges faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
===Subsequent steps===&lt;br /&gt;
* We will be adding methods so that we can statically and dynamically validate the constraints of the form element.&lt;br /&gt;
* We will implement the checkValidity and ReportValidity API for HTML form element.&lt;br /&gt;
* We will implement the validity state defined in the spec and implement the form submission algorithm to include the constraint validation.&lt;br /&gt;
&lt;br /&gt;
=='''Design patterns &amp;amp; o-o practices'''==&lt;br /&gt;
This project is to add some features to servo, so we were not supposed to change the design of original servo project. We used enum and tried to follow good o-o practices in the process of development.&lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard by using the following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy we got 20 code style errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with ui===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check our validation function.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103612</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103612"/>
		<updated>2016-10-29T01:48:53Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Steps===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 13969].&lt;br /&gt;
&lt;br /&gt;
===Implemented Steps===&lt;br /&gt;
* Defined a trait Validatable in validation.rs file that contains methods to be used for validating an html element.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with Tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy  we got 20 syntactic errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with UI===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check whether the validation was working or not.&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103570</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=103570"/>
		<updated>2016-10-29T01:27:34Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
===Build Process===&lt;br /&gt;
* The project &amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt; begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
===Initial Implementation===&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
* We pushed the code to the servo and the pull request is [https://github.com/servo/servo/pull/13969 13969].&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
===Testing with Tidy===&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
When we ran tidy  we got 20 syntactic errors and we fixed all the errors.&lt;br /&gt;
&lt;br /&gt;
===Testing with UI===&lt;br /&gt;
&lt;br /&gt;
We created a test form to check whether the validation was working or not.&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102790</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102790"/>
		<updated>2016-10-28T18:18:48Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;/ref&amp;gt;. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Its source code can be found [https://github.com/servo/servo here]. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description&amp;lt;ref&amp;gt;https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;/ref&amp;gt;'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the original repository from servo and cloned the forked repository on our local machines and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Add new enum that represents each possible validity check in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*Define a &amp;lt;code&amp;gt;Validatable&amp;lt;/code&amp;gt; [https://doc.rust-lang.org/1.12.0/book/traits.html trait] that contains a method which accepts this enum as an argument.&lt;br /&gt;
&lt;br /&gt;
*Implement this trait for different form element types (&amp;lt;code&amp;gt;HTMLInputElement&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HTMLButtonElement&amp;lt;/code&amp;gt;, etc.), and define an as_maybe_validatable method on Element which returns an &amp;lt;code&amp;gt;&amp;amp;Validatable&amp;lt;/code&amp;gt; value if the element implements the trait.&lt;br /&gt;
&lt;br /&gt;
*Use &amp;lt;code&amp;gt;JS&amp;lt;Element&amp;gt;&amp;lt;/code&amp;gt; member to call these new methods in &amp;lt;code&amp;gt;ValidityState&amp;lt;/code&amp;gt;.&lt;br /&gt;
===Challenges Faced===&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 #13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by &amp;lt;code&amp;gt;./mach run tests/html/about-mozilla.html -c&amp;lt;/code&amp;gt; and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
This project is to add some feature to servo, so we were not supposed to change the design of original servo project. We used Enum and tried to follow good OO practices in the process of development. &lt;br /&gt;
&lt;br /&gt;
=='''Testing'''==&lt;br /&gt;
Servo has its own code standard. We managed to meet its code standard. We use following command to run code style check.&lt;br /&gt;
&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach test-tidy&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102644</id>
		<title>CSC/ECE 517 Fall 2016/M1653 Implement HTML form validation</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2016/M1653_Implement_HTML_form_validation&amp;diff=102644"/>
		<updated>2016-10-28T03:31:46Z</updated>

		<summary type="html">&lt;p&gt;Mshaikh: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Implementation of HTML5 form validation in servo'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[https://servo.org Servo] is a modern high performance web browser developed by Mozilla with Samsung porting it on android and arm processors. The source code is written in the [https://www.rust-lang.org/en-US/ rust] programming language, which is a new developed system level programming language. The major advantage of rust language is that it is thread-safe&amp;lt;ref&amp;gt;https://www.rust-lang.org/en-US/&amp;lt;/ref&amp;gt;. This project implements html form validation on servo browser.&lt;br /&gt;
&lt;br /&gt;
=='''Introduction'''==&lt;br /&gt;
The [https://en.wikipedia.org/wiki/HTML5 HTML5]is a markup language used for content organizing and showing on the World Wide Web&amp;lt;ref&amp;gt;https://en.wikipedia.org/wiki/HTML5&amp;lt;/ref&amp;gt;. It defines set of specification which users needs to follow to make web pages HTML5 compliant. In HTML 5 there is a major type of element which is form element. When user trying to submit their form, the system should be able to check the validation status of this form and decide whether accept this form or reject the request. HTML provides such mechanism. Using this mechanism will allow the system to check whether the contents of forms are validated before it is allowed to submit. [https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] currently implements validation check for some of the form element types. The objective of this project is to define and implement validation check function and implement validate step for these HTML5 form elements.&lt;br /&gt;
&lt;br /&gt;
===Servo===&lt;br /&gt;
[https://en.wikipedia.org/wiki/Servo_(layout_engine) Servo] is an open source prototype web browser layout engine that is being developed by Mozilla Research. Current browser engines are mostly based on single-threaded model. Motivation behind building servo web browser is to  build a highly parallel and reliable environment, where different components (such as rendering, layout, HTML parsing, image decoding, etc.) can be handled by fine-grained, isolated tasks.&lt;br /&gt;
&lt;br /&gt;
===Rust===&lt;br /&gt;
[http://doc.rust-lang.org/book/README.html Rust] is an open source systems programming language developed by Mozilla. Rust is a language suited for creating a highly concurrent and safe systems. In performance and syntax, rust is similar to C++ but semantically it is very different. Rust emphasis is on speed, safety and control of memory layout.&lt;br /&gt;
&lt;br /&gt;
=='''Project Description'''==&lt;br /&gt;
* The project begin with installing and compiling the servo browser. For different Operating systems the dependencies are different. We installed it on Ubuntu 14.04 using the following commands.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On Debian-based Linuxes:&lt;br /&gt;
&lt;br /&gt;
    sudo apt-get install curl freeglut3-dev \&lt;br /&gt;
    libfreetype6-dev libgl1-mesa-dri libglib2.0-dev xorg-dev \&lt;br /&gt;
    msttcorefonts gperf g++ cmake python-virtualenv \&lt;br /&gt;
    libssl-dev libglfw-dev&lt;br /&gt;
&lt;br /&gt;
* We then forked the repository and cloned it on our computers and then compiled and ran the servo browser.  &lt;br /&gt;
&lt;br /&gt;
    git clone https://github.com/servo/servo&lt;br /&gt;
    cd servo&lt;br /&gt;
    ./mach build --dev&lt;br /&gt;
    ./mach run tests/html/about-mozilla.html&lt;br /&gt;
&lt;br /&gt;
* While building the servo as shown above we were getting GLSL 1.50 is not supported error. We investigated this issue and found that there was an open issue [https://github.com/servo/servo/issues/13515 13515]. We found that the error was because the rendering was done with Nvidia graphics card and so we changed it to the intel graphics card by ./mach run tests/html/about-mozilla.html -c and were able to run the browser. We even updated the open thread so that other people can take advantage of that.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=='''Design Patterns &amp;amp; OO Practices'''==&lt;br /&gt;
We were not supposed to change the design apart from adding a new behaviour/ability for HTML Element. We tried to follow good OO practices throughout the  development process. We always tried to follow the DRY principle in order to avoid repetition of code. Servo has it's own coding standards which are checked by running following command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./mach test-tidy&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the above code there were a few issues generated and we have fixed all the issues.&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
1.    https://doc.rust-lang.org/stable/book/&amp;lt;br&amp;gt;&lt;br /&gt;
2.    https://en.wikipedia.org/wiki/Rust_(programming_language)&amp;lt;br&amp;gt;&lt;br /&gt;
3.    https://en.wikipedia.org/wiki/Servo_(layout_engine)&amp;lt;br&amp;gt;&lt;br /&gt;
4.    https://github.com/servo/servo/wiki/Form-validation-student-project&amp;lt;br&amp;gt;&lt;br /&gt;
5.    https://doc.rust-lang.org/book/&amp;lt;br&amp;gt;&lt;br /&gt;
6.    http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Spring_2016/Mozilla_Implement_HTML5_form_validation&lt;/div&gt;</summary>
		<author><name>Mshaikh</name></author>
	</entry>
</feed>