<?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=Sniu</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=Sniu"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sniu"/>
	<updated>2026-06-03T10:50:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96968</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96968"/>
		<updated>2015-04-26T01:15:51Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Readme==&lt;br /&gt;
===Instructions to run Expertiza===&lt;br /&gt;
'''To see the new functionality for student:'''&lt;br /&gt;
Login to the Expertiza application using any student account like ‘user5403’, then select assignment.&lt;br /&gt;
*The student should be able to see all the teammates he has teamed with in specific courses on the left panel. &lt;br /&gt;
*To see the teammate review, select “your score” in one assignment, there is one column named “teammate review” showing the teammate review you got from your teammates for this assignment.&lt;br /&gt;
&lt;br /&gt;
'''To see the new functionality for instructor:'''&lt;br /&gt;
Login to Expertiza as an instructor using username “user6”.&lt;br /&gt;
*To see the fixed dashboard, click on the &amp;quot;360 assessment dashboard&amp;quot; action of some particular course.&lt;br /&gt;
*To see the review and metareview scores for each student in one course, click on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of that particular course.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
&lt;br /&gt;
===Adding the teammates details to the Student page===&lt;br /&gt;
&lt;br /&gt;
The number of students that have teamed up with the current user would be seen in the &amp;quot;Assignments&amp;quot; page as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
The new section (circled) in the left pane of the above page indicates the number of teams people the current user has teamed up with in each course and their names. In this case, the current user has 1 teammate in the CSC/ECE 506 class, namely &amp;quot;5409, Student&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Assessment 360 dashboard in the Instructor's page===&lt;br /&gt;
&lt;br /&gt;
The instructor can look at the overview of the course by clicking on the &amp;quot;360 assessment dashboard&amp;quot; action of the particular course. The following image shows the Dashboard page.&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_dashboard.jpg]]&lt;br /&gt;
 &lt;br /&gt;
This page summarizes the details such as the Grade distribution and Review progress for each of the assignments.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Aggregated Metareviews Page for the Instructor's===&lt;br /&gt;
&lt;br /&gt;
Similarly, the instructor can look at the review and metareview scores for each student by clicking on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of the particular course. The following image shows the resulting page.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews1.jpg]]&lt;br /&gt;
 &lt;br /&gt;
Along with the aggregate scores for each student, this page also shows the class averages for each assignment as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96967</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96967"/>
		<updated>2015-04-26T01:15:19Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Instructions to run Expertiza */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Readme==&lt;br /&gt;
===Instructions to run Expertiza===&lt;br /&gt;
'''To see the new functionality for student:'''&lt;br /&gt;
Login to the Expertiza application using any student account like ‘user5403’, then select assignment.&lt;br /&gt;
*The student should be able to see all the teammates he has teamed with in specific courses on the left panel. &lt;br /&gt;
*To see the teammate review, select “your score” in one assignment, there is one column named “teammate review” showing the teammate review you got from your teammates for this assignment.&lt;br /&gt;
&lt;br /&gt;
'''To see the new functionality for instructor:'''&lt;br /&gt;
Login to Expertiza as an instructor using username “user6”.&lt;br /&gt;
*To see the fixed dashboard, click on the &amp;quot;360 assessment dashboard&amp;quot; action of some particular course.&lt;br /&gt;
*To see the review and metareview scores for each student in one course, click on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of that particular course.&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
&lt;br /&gt;
===Adding the teammates details to the Student page===&lt;br /&gt;
&lt;br /&gt;
The number of students that have teamed up with the current user would be seen in the &amp;quot;Assignments&amp;quot; page as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
The new section (circled) in the left pane of the above page indicates the number of teams people the current user has teamed up with in each course and their names. In this case, the current user has 1 teammate in the CSC/ECE 506 class, namely &amp;quot;5409, Student&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Assessment 360 dashboard in the Instructor's page===&lt;br /&gt;
&lt;br /&gt;
The instructor can look at the overview of the course by clicking on the &amp;quot;360 assessment dashboard&amp;quot; action of the particular course. The following image shows the Dashboard page.&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_dashboard.jpg]]&lt;br /&gt;
 &lt;br /&gt;
This page summarizes the details such as the Grade distribution and Review progress for each of the assignments.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Aggregated Metareviews Page for the Instructor's===&lt;br /&gt;
&lt;br /&gt;
Similarly, the instructor can look at the review and metareview scores for each student by clicking on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of the particular course. The following image shows the resulting page.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews1.jpg]]&lt;br /&gt;
 &lt;br /&gt;
Along with the aggregate scores for each student, this page also shows the class averages for each assignment as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96966</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96966"/>
		<updated>2015-04-26T01:15:03Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Instructions to run Expertiza */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Readme==&lt;br /&gt;
===Instructions to run Expertiza===&lt;br /&gt;
'''To see the new functionality for student:'''&lt;br /&gt;
Login to the Expertiza application using any student account like ‘user5403’, then select assignment.&lt;br /&gt;
**The student should be able to see all the teammates he has teamed with in specific courses on the left panel. &lt;br /&gt;
**To see the teammate review, select “your score” in one assignment, there is one column named “teammate review” showing the teammate review you got from your teammates for this assignment.&lt;br /&gt;
&lt;br /&gt;
'''To see the new functionality for instructor:'''&lt;br /&gt;
Login to Expertiza as an instructor using username “user6”.&lt;br /&gt;
*To see the fixed dashboard, click on the &amp;quot;360 assessment dashboard&amp;quot; action of some particular course.&lt;br /&gt;
*To see the review and metareview scores for each student in one course, click on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of that particular course.&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
&lt;br /&gt;
===Adding the teammates details to the Student page===&lt;br /&gt;
&lt;br /&gt;
The number of students that have teamed up with the current user would be seen in the &amp;quot;Assignments&amp;quot; page as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
The new section (circled) in the left pane of the above page indicates the number of teams people the current user has teamed up with in each course and their names. In this case, the current user has 1 teammate in the CSC/ECE 506 class, namely &amp;quot;5409, Student&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Assessment 360 dashboard in the Instructor's page===&lt;br /&gt;
&lt;br /&gt;
The instructor can look at the overview of the course by clicking on the &amp;quot;360 assessment dashboard&amp;quot; action of the particular course. The following image shows the Dashboard page.&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_dashboard.jpg]]&lt;br /&gt;
 &lt;br /&gt;
This page summarizes the details such as the Grade distribution and Review progress for each of the assignments.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Aggregated Metareviews Page for the Instructor's===&lt;br /&gt;
&lt;br /&gt;
Similarly, the instructor can look at the review and metareview scores for each student by clicking on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of the particular course. The following image shows the resulting page.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews1.jpg]]&lt;br /&gt;
 &lt;br /&gt;
Along with the aggregate scores for each student, this page also shows the class averages for each assignment as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96965</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96965"/>
		<updated>2015-04-26T00:35:48Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Readme==&lt;br /&gt;
===Instructions to run Expertiza===&lt;br /&gt;
*To see the new functionality for student:&lt;br /&gt;
Login to the Expertiza application using any student account like ‘user5403’,&lt;br /&gt;
then select assignment, the student should be able to see all the teammates he has teamed with in specific courses on the left panel. To see the teammate review, select “your score” in one assignment, there is one column named “teammate review” showing the teammate review you got from your teammates for this assignment.&lt;br /&gt;
&lt;br /&gt;
*To see the new functionality for instructor:&lt;br /&gt;
Login to Expertiza as an instructor using username “user6”,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
&lt;br /&gt;
===Adding the teammates details to the Student page===&lt;br /&gt;
&lt;br /&gt;
The number of students that have teamed up with the current user would be seen in the &amp;quot;Assignments&amp;quot; page as shown in the figure below.&lt;br /&gt;
&lt;br /&gt;
[[File:Assignments_page.jpg]]&lt;br /&gt;
&lt;br /&gt;
The new section (circled) in the left pane of the above page indicates the number of teams people the current user has teamed up with in each course and their names. In this case, the current user has 1 teammate in the CSC/ECE 506 class, namely &amp;quot;5409, Student&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Assessment 360 dashboard in the Instructor's page===&lt;br /&gt;
&lt;br /&gt;
The instructor can look at the overview of the course by clicking on the &amp;quot;360 assessment dashboard&amp;quot; action of the particular course. The following image shows the Dashboard page.&lt;br /&gt;
&lt;br /&gt;
[[File:Assessment360_dashboard.jpg]]&lt;br /&gt;
 &lt;br /&gt;
This page summarizes the details such as the Grade distribution and Review progress for each of the assignments.&lt;br /&gt;
&lt;br /&gt;
===Fixing the Aggregated Metareviews Page for the Instructor's===&lt;br /&gt;
&lt;br /&gt;
Similarly, the instructor can look at the review and metareview scores for each student by clicking on the &amp;quot;View aggregated team mate and metareviews&amp;quot; action of the particular course. The following image shows the resulting page.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews1.jpg]]&lt;br /&gt;
 &lt;br /&gt;
Along with the aggregate scores for each student, this page also shows the class averages for each assignment as shown in the image below.&lt;br /&gt;
&lt;br /&gt;
[[File:metareviews2.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96902</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96902"/>
		<updated>2015-04-24T01:18:10Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
===README===&lt;br /&gt;
'''To view the change, log in as an existing instructor or student.'''&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96901</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96901"/>
		<updated>2015-04-24T01:17:45Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
===README===&lt;br /&gt;
'''To view, log in as an existing instructor or student.'''&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96900</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96900"/>
		<updated>2015-04-24T01:17:00Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Functionality achieved after Modification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96899</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96899"/>
		<updated>2015-04-24T01:14:50Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* New functionality after Modification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Functionality achieved after Modification==&lt;br /&gt;
'''To view, log in as an existing instructor or student.'''&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96898</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96898"/>
		<updated>2015-04-24T01:14:22Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* New functionality after Modification */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==New functionality after Modification==&lt;br /&gt;
'''To view, log in as an existing instructor or student.'''&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96897</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96897"/>
		<updated>2015-04-24T01:13:46Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==New functionality after Modification==&lt;br /&gt;
***To view, log in as an existing instructor or student.***&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96891</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96891"/>
		<updated>2015-04-24T01:02:48Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/models/student_task.rb app/models/student_task.rb]'''&lt;br /&gt;
&lt;br /&gt;
The file contains all the methods related to students and the assignments objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96198</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96198"/>
		<updated>2015-04-01T00:46:31Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Potential performance issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
Since a view of aggregation of teammates and reviews are added and the information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96196</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96196"/>
		<updated>2015-04-01T00:45:47Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page &amp;quot;http://expertiza.ncsu.edu/student_task/list&amp;quot; (Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
A view of aggregation of teammates and reviews are added.The information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96195</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96195"/>
		<updated>2015-04-01T00:45:23Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page http://expertiza.ncsu.edu/student_task/list(Need log in to see). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
A view of aggregation of teammates and reviews are added.The information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96193</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96193"/>
		<updated>2015-04-01T00:44:15Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the '''app/views/grades/_teammate_reviews.html.erb''' file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
A view of aggregation of teammates and reviews are added.The information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96191</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96191"/>
		<updated>2015-04-01T00:42:59Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features that will be added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
A view of aggregation of teammates and reviews are added.The information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96187</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96187"/>
		<updated>2015-04-01T00:40:46Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This view file displays various statistics related to review scores obtained by the student in different assignments.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
The assignments controller contains the new, create, edit, update, delete and various other useful functions pertaining to the assignment objects.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Potential performance issues==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
A view of aggregation of teammates and reviews are added.The information of teammates are shown on two pages: the course page and the assignment page. There may exist duplication of method calls, which will increase the overall loading time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96177</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96177"/>
		<updated>2015-04-01T00:32:29Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is not less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96175</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96175"/>
		<updated>2015-04-01T00:31:32Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value 'k', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96174</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96174"/>
		<updated>2015-04-01T00:30:30Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value''', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96173</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96173"/>
		<updated>2015-04-01T00:29:15Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Problem statements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/student_task_controller.rb app/controllers/student_task_controller.rb]'''&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/student_task/list.html.erb app/views/student_task/list.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/views/assessment360/all_students_all_reviews.html.erb app/views/assessment360/all_students_all_reviews.html.erb]'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assignments_controller.rb app/controllers/assignments_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value''', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96172</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96172"/>
		<updated>2015-04-01T00:26:25Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Problem statements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''[https://github.com/expertiza/expertiza/blob/rails4/app/controllers/assessment360_controller.rb app/controllers/assessment360_controller.rb]'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
*'''app/views/student_task/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''app/views/assessment360/all_students_all_reviews.html.erb'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''app/controllers/assignments_controller.rb'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value''', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96171</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96171"/>
		<updated>2015-04-01T00:24:26Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Problem statements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*'''app/controllers/assessment360_controller.rb'''&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*'''app/controllers/student_task_controller.rb'''&lt;br /&gt;
*'''app/views/student_task/list.html.erb'''&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*'''app/views/assessment360/all_students_all_reviews.html.erb'''&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*'''app/controllers/assignments_controller.rb'''&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value''', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96168</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96168"/>
		<updated>2015-04-01T00:21:40Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Problem statements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
*app/controllers/assessment360_controller.rb&lt;br /&gt;
&lt;br /&gt;
This file implements methods to represent various scores obtained by the student in each individual assignment and all assignments together in various pictorial formats such as Pie Charts and Bar Charts. &lt;br /&gt;
&lt;br /&gt;
*app/controllers/student_task_controller.rb&lt;br /&gt;
*app/views/student_task/list.html.erb&lt;br /&gt;
&lt;br /&gt;
These files handle all the assignments related functions. These include showing all the assignments of all the courses, and displaying details about each assignment such as deadlines, team details, submission links, links to review others’ work, scores etc.&lt;br /&gt;
&lt;br /&gt;
*app/views/assessment360/all_students_all_reviews.html.erb&lt;br /&gt;
&lt;br /&gt;
This file is respondable for, from insturctor’s view, showing all the students’s info enrolled in one course and the review scores they got from their teammates.&lt;br /&gt;
&lt;br /&gt;
*app/controllers/assignments_controller.rb&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 3: Allow the instructor to be able to see the teaming information of all the students.'''&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
This would involve adding similar changes as allowing students to view their teammates in the Instructors views.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 4: Prevent students from seeing individual review scores when the number of team members who reviewed the student is less than a minimum value''', where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
** '''Actor:''' Instructor&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Instructor logs in to Expertiza.&lt;br /&gt;
*** A minimum value k is set by the instructor&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Students should be able to see individual review scores only when number of team members who reviewed the student is less than k&lt;br /&gt;
&lt;br /&gt;
This can be achieved by adding an additional implementation detail that checks for the number of reviews received by the student while adding the review scores field for each student.&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Testing Requirements==&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96163</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96163"/>
		<updated>2015-04-01T00:15:03Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 1: Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:''' &lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open the “Teammates” link in the “Assignments” page to find the number of people the student has collaborated with till then.&lt;br /&gt;
&lt;br /&gt;
In order to achieve this, we plan to add a link, say “Teammates” in the “Assignments” page (http://expertiza.ncsu.edu/student_task/list). Clicking on the Teammates link leads to a page consisting of all the courses the student is enrolled in and number of people (s)he has teamed up with till then. This goal can be achieved by adding additional methods to the app/views/student_task/list.html.erb file and app/controllers/student_task_controller.rb.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Use Case 2: Allow students to see the review score that teammates have given them for contributions to their team projects.'''&lt;br /&gt;
** '''Actor:''' Student&lt;br /&gt;
** '''Actions:'''&lt;br /&gt;
*** Student logs in to Expertiza.&lt;br /&gt;
*** Open any assignment on the “Assignments” page.&lt;br /&gt;
*** Open “Your Scores” to find the review scores given by teammates in the “Teammate review” column.&lt;br /&gt;
&lt;br /&gt;
We noticed there is already a field “Teammate review” available in the “Your scores” (http://expertiza.ncsu.edu/grades/view_my_scores/&amp;lt;id&amp;gt;) page of each assignment, and as of now it seems to be unused. We plan to use this section for allowing the students to see their review scores given by the team mates. This can be achieved by making changes to the app/views/grades/_teammate_reviews.html.erb file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:use_case.png‎  |frame|center|Use Case Diagram]]&lt;br /&gt;
&lt;br /&gt;
==Test requirement==&lt;br /&gt;
Testing Requirements&lt;br /&gt;
Testing will be carried out to verify the desired functionality. &lt;br /&gt;
For example:&lt;br /&gt;
A student have a new teammate in one of the course’s assignment. Then this student should be able to see this teammate on the teammates page for this course, not just on the teammates page for this assignment.&lt;br /&gt;
If this new teammate gave him a new review score based on his contribution to their teamwork, this student should be able to see the review score if the number of reviews given for this assignment is higher than k, which is preassigned by the instructor for this assignment. The review access condition is shown in the figure above.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Use_case.jpg&amp;diff=96162</id>
		<title>File:Use case.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Use_case.jpg&amp;diff=96162"/>
		<updated>2015-04-01T00:11:16Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Use_case.png&amp;diff=96159</id>
		<title>File:Use case.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Use_case.png&amp;diff=96159"/>
		<updated>2015-04-01T00:09:35Z</updated>

		<summary type="html">&lt;p&gt;Sniu: uploaded a new version of &amp;amp;quot;File:Use case.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96155</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96155"/>
		<updated>2015-04-01T00:07:23Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Problem statements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96154</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96154"/>
		<updated>2015-04-01T00:07:17Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96152</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96152"/>
		<updated>2015-04-01T00:06:58Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Expertiza is a large project developed as a combined effort of students and faculty using the Ruby on Rails framework. The main advantage of using Expertiza, in an educational environment, is for the instructor to introduce peer reviewing among the students. Expertiza allows the instructor to create and customize assignments, create a list of topics the students can sign up for, have students work on teams and then review each other's assignments at the end. Expertiza supports submission of almost any document type, including the URLs and wiki pages.&lt;br /&gt;
Currently the teaming information is only accessible from specific assignment. Sometimes a course may require a student to work with at least, for example 5 other students. To check teaming information for a course, It would be helpful for a student to have a way in Expertiza to see how many other students (s)he has teamed with during a course, and who those students are.  An instructor might also want to see this information for grading purposes. Similarly, instructors and students want to see scores that teammates have given them for contributions to their team projects.&lt;br /&gt;
&lt;br /&gt;
===Scope===&lt;br /&gt;
New features added to the system will &lt;br /&gt;
&lt;br /&gt;
*Allow a student to see how many other students (s)he has teamed with during a course, and who those students are.&lt;br /&gt;
*Allow students to see the review score that teammates have given them for contributions to their team projects.&lt;br /&gt;
*Allow the instructor to be able to see the teaming information of all the students.&lt;br /&gt;
*Prevent students from seeing individual review scores when the number of team members who reviewed the student is &amp;lt; k, where k should be settable by the instructor when editing an assignment.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
All the documentation for the Expertiza system can be found in the following links:&lt;br /&gt;
[https://github.com/expertiza/expertiza Expertiza on Github]&lt;br /&gt;
[http://wikis.lib.ncsu.edu/index.php/Expertiza Wiki documentation for Expertiza]&lt;br /&gt;
&lt;br /&gt;
The following section discusses briefly about each file that has would be modified in the course of this project.&lt;br /&gt;
&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96148</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96148"/>
		<updated>2015-03-31T23:31:21Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Introduction To Expertiza */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (Original version)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
===Scope===&lt;br /&gt;
==Documentation==&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96147</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96147"/>
		<updated>2015-03-31T23:30:50Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
===Scope===&lt;br /&gt;
==Documentation==&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96146</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96146"/>
		<updated>2015-03-31T23:30:20Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
===Scope===&lt;br /&gt;
==Documentation==&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement==&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96145</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96145"/>
		<updated>2015-03-31T23:30:10Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
===Scope===&lt;br /&gt;
==Documentation==&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases==&lt;br /&gt;
==Test requirement&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96144</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96144"/>
		<updated>2015-03-31T23:30:01Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
===Scope===&lt;br /&gt;
==Documentation==&lt;br /&gt;
==Problem statements==&lt;br /&gt;
==Use Cases&lt;br /&gt;
==Test requirement&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96142</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96142"/>
		<updated>2015-03-31T23:21:22Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
===Introduction To Expertiza===&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Purpose===&lt;br /&gt;
===Scope Of The Project===&lt;br /&gt;
==Documentation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96139</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96139"/>
		<updated>2015-03-31T23:18:38Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===Purpose===&lt;br /&gt;
===Scope Of The Project===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96138</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96138"/>
		<updated>2015-03-31T23:18:17Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===Purpose===&lt;br /&gt;
===Scope Of This Project===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96137</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96137"/>
		<updated>2015-03-31T23:18:07Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
===Purpose===&lt;br /&gt;
===Scope Of This Project&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96133</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96133"/>
		<updated>2015-03-31T23:16:19Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Reference==&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96132</id>
		<title>CSC/ECE 517 Spring 2015 E1525 TIAA</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015_E1525_TIAA&amp;diff=96132"/>
		<updated>2015-03-31T23:15:55Z</updated>

		<summary type="html">&lt;p&gt;Sniu: Created page with &amp;quot;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;  Expertiza is a web application where students can submit and peer-review learning objects (articles,...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Teaming information and analytics &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015&amp;diff=96131</id>
		<title>CSC/ECE 517 Spring 2015</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015&amp;diff=96131"/>
		<updated>2015-03-31T23:12:51Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Writing Assignment 1==&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 17 WL]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 5 ZX]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 6 TZ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 4 RW]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 7 SA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 9 RA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 14 RI]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 1 DZ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 20 HA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 3 RF]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 12 LS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 13 MA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1a 2 WA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 21 QW]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 23 MS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 10 GL]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 27 VC]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 22 SF]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 15 SH]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/ch1b 18 AS]]&lt;br /&gt;
&lt;br /&gt;
==Writing Assignment 2==&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1502 wwj]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1508 MRS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1504 IMV]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1505 xzl]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1509 lds]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1510 FLP]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1506 SYZ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss S1504 AAC]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1507 DG]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss M1502 GVJ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss M1503 EDT]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1503 RSA]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss E1501 YWS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015/oss S1501 OA]]&lt;br /&gt;
&lt;br /&gt;
==Final Project Design Document==&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 E1526 MPRI]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 S1503 LWJZ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 S1524 FSZZ]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 M1503 EDTS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 E1529 GLDS]]&lt;br /&gt;
*[[CSC/ECE 517 Spring 2015 E1525 TIAA]]&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95945</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95945"/>
		<updated>2015-03-24T01:46:10Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
* Originally there are 13 queries after loading these related pages, and now there are only 5 of them. As shown below.&lt;br /&gt;
* The time consumed for rendering the view is 943 sec before and 284 after the modification.&lt;br /&gt;
We can see the performance has been highly improved. If we have a larger database, the improvement would be more significant.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Before our modification, when an instructor open the expertiza website and log in, it takes much time to show the page after log in, especially when a larger database hiding behind. We saw the problem on the console windows which emerged as a duplication of unnecessary queries. After our modification, the duplication disappeared and the time consumption is reduced significantly. Now when an instructor log in expertiza, it takes shorter time to get to page after log in. Please check our new version of [https://github.com/fwu8/expertiza expertiza] on github.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95944</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95944"/>
		<updated>2015-03-24T01:45:04Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub (low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
* Originally there are 13 queries after loading these related pages, and now there are only 5 of them. As shown below.&lt;br /&gt;
* The time consumed for rendering the view is 943 sec before and 284 after the modification.&lt;br /&gt;
We can see the performance has been highly improved. If we have a larger database, the improvement would be more significant.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Before our modification, when an instructor open the expertiza website and log in, it takes much time to show the page after log in, especially when a larger database hiding behind. We saw the problem on the console windows which emerged as a duplication of unnecessary queries. After our modification, the duplication disappeared and the time consumption is reduced significantly. Now when an instructor log in expertiza, it takes shorter time to get to page after log in.&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95943</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95943"/>
		<updated>2015-03-24T01:44:51Z</updated>

		<summary type="html">&lt;p&gt;Sniu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub(low performance)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
* Originally there are 13 queries after loading these related pages, and now there are only 5 of them. As shown below.&lt;br /&gt;
* The time consumed for rendering the view is 943 sec before and 284 after the modification.&lt;br /&gt;
We can see the performance has been highly improved. If we have a larger database, the improvement would be more significant.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Before our modification, when an instructor open the expertiza website and log in, it takes much time to show the page after log in, especially when a larger database hiding behind. We saw the problem on the console windows which emerged as a duplication of unnecessary queries. After our modification, the duplication disappeared and the time consumption is reduced significantly. Now when an instructor log in expertiza, it takes shorter time to get to page after log in.&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95942</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95942"/>
		<updated>2015-03-24T01:43:43Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
* Originally there are 13 queries after loading these related pages, and now there are only 5 of them. As shown below.&lt;br /&gt;
* The time consumed for rendering the view is 943 sec before and 284 after the modification.&lt;br /&gt;
We can see the performance has been highly improved. If we have a larger database, the improvement would be more significant.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
Before our modification, when an instructor open the expertiza website and log in, it takes much time to show the page after log in, especially when a larger database hiding behind. We saw the problem on the console windows which emerged as a duplication of unnecessary queries. After our modification, the duplication disappeared and the time consumption is reduced significantly. Now when an instructor log in expertiza, it takes shorter time to get to page after log in.&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95941</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95941"/>
		<updated>2015-03-24T01:34:21Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Performance Improvement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
* Originally there are 13 queries after loading these related pages, and now there are only 5 of them. As shown below.&lt;br /&gt;
* The time consumed for rendering the view is 943 sec before and 284 after the modification.&lt;br /&gt;
We can see the performance has been highly improved. If we have a larger database, the improvement would be more significant.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95939</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95939"/>
		<updated>2015-03-24T01:30:25Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* Performance Improvment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvement==&lt;br /&gt;
Originally there are 13 queries after loading these related pages, and now there are only 5 of them, as can been seen from the console output result below. Thus the performance is improved and the total rendering time consumption is reduced.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95938</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95938"/>
		<updated>2015-03-24T01:30:02Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* _row_header.html.erb] and assignment_node.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in [https://github.com/fwu8/expertiza/blob/master/app/models/assignment_node.rb &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvment==&lt;br /&gt;
Originally there are 13 queries after loading these related pages, and now there are only 5 of them, as can been seen from the console output result below. Thus the performance is improved and the total rendering time consumption is reduced.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95937</id>
		<title>CSC/ECE 517 Spring 2015/oss E1510 FLP</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2015/oss_E1510_FLP&amp;diff=95937"/>
		<updated>2015-03-24T01:29:08Z</updated>

		<summary type="html">&lt;p&gt;Sniu: /* _row_header.html.erb] and assignment_node.rb */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;font size=&amp;quot;6&amp;quot;&amp;gt;&amp;lt;b&amp;gt; Expertiza - Fix Instructor Login Performance Issue &amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application where students can submit and peer-review learning objects (articles, code, web sites, etc). It is used in select courses at NC State and by professors at several other colleges and universities.&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
Currently when an Instructor logs into Expertiza,there are a lot of select* from assignments queries being fired on database which would have an adverse effect on performance. We analyzed the source of this issue and made some changes, which reduced the number of select queries executed. The performance is high improved.&lt;br /&gt;
The mission involved is tracing the source of the issue and modify the code to fix the issue.&lt;br /&gt;
&lt;br /&gt;
===Performance issue before modification===&lt;br /&gt;
Before the improvement is achieved, each time an instructor logs into Expertiza, there would be several database queries, which are more than needed and take more time to render the view. Below is the console outputs when an instructor logs in.&lt;br /&gt;
&lt;br /&gt;
[[File:before_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
we can see that there are 7 assignment queries after load &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_shared_actions.html.erb&amp;lt;/code&amp;gt;, 3 assignment queries after load &amp;lt;code&amp;gt;_assignments_actions&amp;lt;/code&amp;gt;. All of these queries are same.These duplicate queries have an adverse effect on the performance.&lt;br /&gt;
&lt;br /&gt;
==Locate source of issues==&lt;br /&gt;
To locate the files that generate the duplication of queries, we use a Gem called QueryReviewer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt; to help trace the datebase queries. QueryReviewer is an advanced SQL query analyzer&amp;lt;ref&amp;gt;https://github.com/nesquena/query_reviewer&amp;lt;/ref&amp;gt;. It accomplishes the following goals:&lt;br /&gt;
* View all &amp;lt;code&amp;gt;EXPLAIN&amp;lt;/code&amp;gt; output for all &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; queries to generate a page&lt;br /&gt;
* Rate a page's SQL usage into one of three categories: &amp;lt;code&amp;gt;OK, WARNING, CRITICAL&amp;lt;/code&amp;gt;&lt;br /&gt;
* Attach meaningful warnings to individual queries, and collections of queries&lt;br /&gt;
* Display interactive summary on page&lt;br /&gt;
===Install query_reviewer===&lt;br /&gt;
Installing query_reviewer is simple. All you have to do to install it into your Rails 2 or 3 project is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  gem install query_reviewer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Right now if you use bundler, simply add this to your &amp;lt;code&amp;gt;Gemfile&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or to use the latest from github:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Gemfile&lt;br /&gt;
  gem &amp;quot;query_reviewer&amp;quot;, :github =&amp;gt; &amp;quot;nesquena/query_reviewer&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After installing and running this Gem on the Rails application, it would pop-up database query information on the webpage, as is shown below.&lt;br /&gt;
&lt;br /&gt;
[[File:Query_Reviewer.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
We can thus follow the trace of this query reviewer page, and locate the source of the issue in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;, also the source code in &amp;lt;code&amp;gt;_assignment_action.html.erb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Analyze code===&lt;br /&gt;
We log into Expertiza as an instructor with the QueryReviewer activate and watch the output of QueryReviewer. The above figure shows the tracing result of the QueryReviewer and it tells us that we should pay more attention to the three files: assignment_node.rb, _row_header.html.erb and _entry.html.erb. &lt;br /&gt;
==== [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/actions/_assignments_actions.html.erb &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;] ====&lt;br /&gt;
In file &amp;lt;code&amp;gt;_assignment_actions.html.erb&amp;lt;/code&amp;gt;, we can find in 3 places use &amp;lt;code&amp;gt;Assignment.find(node.node_object_id)&amp;lt;/code&amp;gt;, which is actually a database query request.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1  &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
11 &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
52 &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;] and &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt; ====&lt;br /&gt;
In [https://github.com/fwu8/expertiza/blob/master/app/views/tree_display/_row_header.html.erb &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt;]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
26  &amp;lt;% if parent_node.get_name == 'Courses'&amp;amp;&amp;amp; session[:user].role_id == 6 %&amp;gt;&lt;br /&gt;
27  &amp;lt;%else%&amp;gt;&lt;br /&gt;
28    &amp;lt;%= parent_node.get_name %&amp;gt;&lt;br /&gt;
29    &amp;lt;% if parent_node.get_directory != nil%&amp;gt;&lt;br /&gt;
30      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Directory:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_directory %&amp;gt;&lt;br /&gt;
31    &amp;lt;% end %&amp;gt;&lt;br /&gt;
32    &amp;lt;% if parent_node.get_creation_date != nil %&amp;gt;&lt;br /&gt;
33      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Creation Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_creation_date %&amp;gt;&lt;br /&gt;
34    &amp;lt;% end %&amp;gt;&lt;br /&gt;
35    &amp;lt;% if parent_node.get_modified_date != nil %&amp;gt;&lt;br /&gt;
36      &amp;lt;BR/&amp;gt;&amp;lt;I&amp;gt;Updated Date:&amp;lt;/I&amp;gt; &amp;lt;%= parent_node.get_modified_date %&amp;gt;&lt;br /&gt;
37    &amp;lt;% end %&amp;gt;&lt;br /&gt;
38  &amp;lt;%end%&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
we can see in this view, &amp;lt;code&amp;gt;parent_node&amp;lt;/code&amp;gt; is a &amp;lt;code&amp;gt;AssignmentNode&amp;lt;/code&amp;gt; object, it execute:&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_name&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_directory&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_creation_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
* &amp;lt;code&amp;gt;parent_node.get_modified_date&amp;lt;/code&amp;gt; method&lt;br /&gt;
However, in &amp;lt;code&amp;gt;assignment_node.rb&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
6  class AssignmentNode &amp;lt; Node&lt;br /&gt;
   ...   &lt;br /&gt;
58   # Gets the name from the associated object&lt;br /&gt;
59   def get_name&lt;br /&gt;
60     Assignment.find(self.node_object_id).name&lt;br /&gt;
61   end&lt;br /&gt;
62 &lt;br /&gt;
63   # Gets the directory_path from the associated object&lt;br /&gt;
64   def get_directory&lt;br /&gt;
65     Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
66   end&lt;br /&gt;
67 &lt;br /&gt;
68   # Gets the created_at from the associated object&lt;br /&gt;
69   def get_creation_date&lt;br /&gt;
70     Assignment.find(self.node_object_id).created_at&lt;br /&gt;
71   end&lt;br /&gt;
72&lt;br /&gt;
73   # Gets the updated_at from the associated object&lt;br /&gt;
74   def get_modified_date&lt;br /&gt;
75     Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
76   end&lt;br /&gt;
   ...&lt;br /&gt;
82 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We find all these method called &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; method, which is actually a database query request. These 'find's are actually redundant for a specific Assignment instance. So we will figure out a way to eliminate those redundant method calls.&lt;br /&gt;
&lt;br /&gt;
==Modifications==&lt;br /&gt;
&lt;br /&gt;
===_assignment_actions.html.erb===&lt;br /&gt;
An instance variable &amp;lt;code&amp;gt;@assignment&amp;lt;/code&amp;gt; is used here instead of multiple times of calling &amp;lt;code&amp;gt;.find&amp;lt;/code&amp;gt; method, thus reducing database queries.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+ &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
- &amp;lt;% owner_id = Object.const_get('Assignment').find(node.node_object_id).instructor_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% owner_id = @assignment.instructor_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% @assignment = Assignment.find(node.node_object_id) %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
- &amp;lt;% if Assignment.find(node.node_object_id).course_id %&amp;gt;&lt;br /&gt;
+ &amp;lt;% if @assignment.course_id %&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===assignment_node.rb===&lt;br /&gt;
In this class, we define a new variable &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;, and in every &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, instead of using &amp;lt;code&amp;gt;Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt; to find the AssignmentNode object, we first search if &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt; variable exist, if not, we define &amp;lt;code&amp;gt;@assign_node = Assignment.find(self.node_object_id)&amp;lt;/code&amp;gt;, else we directly use &amp;lt;code&amp;gt;@assign_node&amp;lt;/code&amp;gt;. Because &amp;lt;code&amp;gt;_row_header.html.erb&amp;lt;/code&amp;gt; file has many &amp;lt;code&amp;gt;get_&amp;lt;/code&amp;gt; method, after modification, the number of assignment queries decreases much.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class AssignmentNode &amp;lt; Node&lt;br /&gt;
# Gets the name from the associated object&lt;br /&gt;
  def get_name&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the directory_path from the associated object&lt;br /&gt;
  def get_directory&lt;br /&gt;
    #Assignment.find(self.node_object_id).directory_path&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.directory_path&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the created_at from the associated object&lt;br /&gt;
  def get_creation_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).created_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
    	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.created_at&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  # Gets the updated_at from the associated object&lt;br /&gt;
  def get_modified_date&lt;br /&gt;
    #Assignment.find(self.node_object_id).updated_at&lt;br /&gt;
    unless @assign_node&lt;br /&gt;
   	@assign_node = Assignment.find(self.node_object_id)&lt;br /&gt;
    end&lt;br /&gt;
    @assign_node.updated_at&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance Improvment==&lt;br /&gt;
Originally there are 13 queries after loading these related pages, and now there are only 5 of them, as can been seen from the console output result below. Thus the performance is improved and the total rendering time consumption is reduced.&lt;br /&gt;
[[File:after_modify.png|center]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sniu</name></author>
	</entry>
</feed>