<?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=Sjshah</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=Sjshah"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Sjshah"/>
	<updated>2026-06-06T10:12:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92515</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92515"/>
		<updated>2014-12-04T05:57:17Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Files to be changed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades/view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades/view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92514</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92514"/>
		<updated>2014-12-04T05:57:01Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Files involved */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades/view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades/view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92513</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92513"/>
		<updated>2014-12-04T05:55:13Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Files to be merged : Dashboard for students */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades/view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades/view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92512</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92512"/>
		<updated>2014-12-04T05:54:07Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Files to be merged : Dashboard for students */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92509</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92509"/>
		<updated>2014-12-04T05:50:32Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Functionality of each file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb, tree_display/_page_header.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92508</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92508"/>
		<updated>2014-12-04T05:49:06Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Functionality of each file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb, tree_display/_page_header.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92507</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92507"/>
		<updated>2014-12-04T05:48:43Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Functionality of each file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb, tree_display/_page_header.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Changes made for the project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Made code changes for searching within a course when required&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
| Made changes to display tables and the charts generated by the grades_controller&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
| Added an icon for navigation to questionnaires for a given course.&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Table data and graph generation code added so that the grades for the entire class are calculated.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added a short method to redirect control with the correct parameters when questionnaires are loaded.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Added some code in the search method to allow searching for questionnaires either by course or in general.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92506</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92506"/>
		<updated>2014-12-04T05:33:31Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Changes made in each file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb, tree_display/_page_header.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/_page_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; schema.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Database&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92505</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=92505"/>
		<updated>2014-12-04T05:33:02Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Functionality of each file */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
[My main comment is that I would like a mockup of how your screens are going to look, so I can judge if the required info is there and if the UI is intuitive enough.]&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and its codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  questionnaire_type_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb, tree_display/actions/_courses_actions.html.erb, tree_display/_page_header.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, questionnaires_controller.rb, tree_display_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 db/schema.rb&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_type_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/_page_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaires_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; schema.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Database&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Functionality of each file====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality involved for implementation&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Changes made in each file====&lt;br /&gt;
&lt;br /&gt;
= Screenshots =&lt;br /&gt;
&amp;lt;b&amp;gt;1) Better display for assignments:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
A new icon for questionnaires added&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:new_icon_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
On click of icon it will display questionnaires related to the selected course&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:questionnaires_view.png|center|frame]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;2) Dashboard for students:&amp;lt;/b&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
It shows the different between previous implementation and new implementation views.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Before&lt;br /&gt;
! After&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[File:before_view.png|frame|left| ]]&lt;br /&gt;
| [[File:after_view.png|frame|left| ]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
For the instructor, there needs to be a way to quickly find rubrics (and other questionnaires) that have been used in a single course. It should be possible to search or click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires. A search functionality for questionnaire is expected. Currently, assignment and course searches is implemented, and there is a dropdown for questionnaire, but it's functionality is missing. &lt;br /&gt;
&lt;br /&gt;
'''Actor:''' Instructot&lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition:''' There are few questionnaires in the system&lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Instructor lands on &amp;quot;Manage content&amp;quot; page  &lt;br /&gt;
&lt;br /&gt;
3. Search for a questionnaire, by selecting questionnaire in the search dropdown and input some search string&lt;br /&gt;
&lt;br /&gt;
4. Search results displayed, expanding only the applicable questionnaires in the list of questionnaires&lt;br /&gt;
&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following use case diagram shows the system of Assignment grades for a student on Expertiza as it is depicted right now. These include viewing their own project submission (with url and attachments), reviews and metareviews on their work, author feedbacks, teammate reviews and their final score on that assignment/project.&amp;lt;ref&amp;gt;Previous year's design document for ''E715: Dashboard for Students'' by Ambika Tripathi, Milan Tonse, Krutika Nagar, Shruti Buch&amp;lt;/ref&amp;gt; As part of this project we shall be adding more data on this page, so that student has better understanding of his/her marks. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing graphical output for scores for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants''': None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for average high and low scores. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class scores for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the graphical output for average, high and low class score for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of reviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of reviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of reviews the student has done for that particular assignment and also the &lt;br /&gt;
&lt;br /&gt;
number of reviews he still has to do to reach the threshold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing number of metareviews done by him/her&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for number of metareviews done by the student. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for my metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the number of metareviews the student has done for that particular assignment and also &lt;br /&gt;
&lt;br /&gt;
the number of metareviews he still has to do to reach the threshold.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class reviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class reviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class reviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class reviews for that particular assignment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Name''': Students viewing average number of class metareviews for the assignment&lt;br /&gt;
&lt;br /&gt;
'''Actor''': Student &lt;br /&gt;
&lt;br /&gt;
'''Other Participants:''' None &lt;br /&gt;
&lt;br /&gt;
'''Precondition''': Statistics have been recorded for class metareviews for that assignment. &lt;br /&gt;
&lt;br /&gt;
'''Primary Sequence:''' &lt;br /&gt;
&lt;br /&gt;
1. Log in to Expertiza&lt;br /&gt;
&lt;br /&gt;
2. Select an assignment &lt;br /&gt;
&lt;br /&gt;
3. Select Your Scores&lt;br /&gt;
&lt;br /&gt;
4. Click on the link for view class metareviews for this assignment.&lt;br /&gt;
&lt;br /&gt;
5. View the average number of class metareviews for that particular assignment&lt;br /&gt;
 &lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
Following is class diagram for Assignment display module. &amp;lt;ref&amp;gt;Previous year's design document for ''E707: Better display for assignments'' by Bharath Sampath(bsampat2),Prakash Vasudevan(pvasude),Raghavendran Nedunchezhian(rnedunc), Yuchuan Liu(yliu63)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
Following is class diagram for Dashboard for students module.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Steps to check the new implementations=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== The new Student dashboard ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an student (Username: user480, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Click on 'Program 1: BackChannel' assignment.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Click on the option 'Your Scores'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. The dashboard is then displayed with the class statistics along with the new graph added.&lt;br /&gt;
&lt;br /&gt;
== The Questionnaire search ==&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Enter any string in the search box&lt;br /&gt;
&amp;lt;br&amp;gt;3. We would be able to see all the questionnaires that have the entered string as a substring in them. &lt;br /&gt;
&lt;br /&gt;
== The Course specific questionnaire list ==&lt;br /&gt;
Sample Test case.&lt;br /&gt;
&amp;lt;br&amp;gt;1. Log-in to Expertiza as an instructor (Username: user2, Password: password).&lt;br /&gt;
&amp;lt;br&amp;gt;2. Expand the Courses option.&lt;br /&gt;
&amp;lt;br&amp;gt;3. Hover over the Course actions menu for the course 'CSC 517, Spring 2014'.&lt;br /&gt;
&amp;lt;br&amp;gt;4. Click on the menu-item that says 'View Questionnaires'.&lt;br /&gt;
&amp;lt;br&amp;gt;5. List of questionnaires would be displayed here.&lt;br /&gt;
&amp;lt;br&amp;gt;6. Search within the above list of questionnaires is also possible by using the search given in the page.&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91973</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91973"/>
		<updated>2014-11-12T02:42:55Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
*In the current state instructor should go through all the questionnaires to find the one they are looking for. &lt;br /&gt;
*The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
*The current student dashboard provides the average score and range of the student’s assignment, review and final score. &lt;br /&gt;
*The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
*As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
*A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
*This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. &lt;br /&gt;
*Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. &lt;br /&gt;
*Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. &lt;br /&gt;
*A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed a significant amount of time ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91967</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91967"/>
		<updated>2014-11-12T02:36:09Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
In the current state instructor should go through all the questionnaires to find the one they are looking for. The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
&lt;br /&gt;
The current student dashboard provides the average score and range of the student’s assignment, review and final score. The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
&lt;br /&gt;
A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
='''References'''=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91965</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91965"/>
		<updated>2014-11-12T02:35:41Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
In the current state instructor should go through all the questionnaires to find the one they are looking for. The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
&lt;br /&gt;
The current student dashboard provides the average score and range of the student’s assignment, review and final score. The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
&lt;br /&gt;
A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91964</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91964"/>
		<updated>2014-11-12T02:35:31Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Specific Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which provides a new dashboard for students to view and compare their performance of each assignment. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
In the current state instructor should go through all the questionnaires to find the one they are looking for. The keyword search functionality is not yet implemented for questionnaires.&lt;br /&gt;
&lt;br /&gt;
The current student dashboard provides the average score and range of the student’s assignment, review and final score. The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
As a part of our project we will implement the search functionality and also make it possible to click and bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
&lt;br /&gt;
A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
This new dashboard gives the students a comparative statistics for that particular assignment for the entire class. Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_Approach.jpg&amp;diff=91962</id>
		<title>File:Dashboard Approach.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Dashboard_Approach.jpg&amp;diff=91962"/>
		<updated>2014-11-12T02:33:27Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Better_Display_Approach.jpg&amp;diff=91959</id>
		<title>File:Better Display Approach.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Better_Display_Approach.jpg&amp;diff=91959"/>
		<updated>2014-11-12T02:30:30Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91946</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91946"/>
		<updated>2014-11-12T02:16:51Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Specific Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project would be to improve the display of questionnaires for all the instructors and also integrating a previous project which is a new dashboard for students to view and compare their performance of the assignments. &lt;br /&gt;
&lt;br /&gt;
==Current State==&lt;br /&gt;
In the current state instructor should go through all the questionnaires to find the one they are looking for. The keyword search functionality is not yet implemented for it.&lt;br /&gt;
&lt;br /&gt;
The current student dashboard provides the average score and range of the student’s assignment, review and final score. The system has a limitation where in a student/instructor cannot view and compare the student scores based on the class performance. The system also does not show the mean , min and max score for a particular assignment which provides students and instructors deep insight into the comparative performance of students.&lt;br /&gt;
&lt;br /&gt;
==Goals==&lt;br /&gt;
As a part of our project we will implement the search functionality and also make it possible to click somewhere to bring up a list of questionnaires used in the course, expanding only the applicable questionnaires in the list of questionnaires.&lt;br /&gt;
&lt;br /&gt;
A project from last year has the implementation for the new student dashboard. We would like to take that project, make the required changes to it and integrate it into expertiza.&lt;br /&gt;
So this new dashboard gives the students a comparative statistics for that particular assignment for the entire class. Giving the min, mean and max gives the student a range to judge where they stand with respect to the class. Other features were part of the project were to show the number of reviews and metareviews he/she has done for this assignment and also based on a threshold what are the number of reviews/metareviews the student still needs to do. A histogram distribution of the scores of the class (all teams) for that assignment would also shown as a part of the dashboard.&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
[[File:Better_Display_Approach.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_Approach.jpg]]&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91916</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91916"/>
		<updated>2014-11-12T01:39:48Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Better display for assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*The instructor's courses&lt;br /&gt;
*Assignments for those courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91915</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91915"/>
		<updated>2014-11-12T01:38:59Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Dashboard for students */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
The features required for the dashboard for students project have already been implemented. So, the main task to be performed by us is to merge the project files with the main project and make sure that nothing else is affected by the process.&lt;br /&gt;
&lt;br /&gt;
The current code is able to display the maximum scores, average scores, number of reviews and distribution charts.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91910</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91910"/>
		<updated>2014-11-12T01:33:54Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Better display for assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
The search functionality for assignments and courses is working well, but the search for questionnaires is not implemented.&lt;br /&gt;
&lt;br /&gt;
So, for this specific project, we plan to focus on implementing the search for questionnaires first. Then, integrate it all and test each functionality: make sure that nothing is affected by the new functionality added. After all the tests are performed, we will merge the project with the main project, thus integrating it with the final build.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all course none in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all assignment node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_node.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| To fetch information about all questionnaire node in the system&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| For direct access to every entity like questionnaires, review rubric etc..&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _row_header.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display of header in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display\ _entry.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display entity in a row&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; tree_display/actions/_courses_actions.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Display separate actions on each row &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; course_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various course related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 9 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; assignment_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various assignment related functions&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 10 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; questionnaire_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| Provides various questionnaire related functions&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
[[File:UML.jpg]]&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91750</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91750"/>
		<updated>2014-11-11T21:50:20Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Better display for assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Our contribution in this project is by improving the display of assignments for all the instructors and also to merge a previous project which made a improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaire by assignment name&lt;br /&gt;
&lt;br /&gt;
Each of these should be compressed to titles only, and it should be possible to expand them by single mouse click. Each course should have its own list of assignments which can, again, be expanded. Also, there is a search box on the page which allows to search assignments, courses and questionnaires.&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Files to be merged : Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Functionality of each file===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Files to be changed : Better display of assignment===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 course_node.rb,assignment_node.rb,questionnaire_node.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 tree_display\ _row_header.html.erb,tree_display\ _entry.html.erb,tree_display/actions/_courses_actions.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tree_display controller.rb,course_controller.rb,assignment_controller.rb,questionnaire_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  JavaScript&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  tableactions.js&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
[[File:Assignment_display_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_existing.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[File:Dashboard_new.jpg]]&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91729</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91729"/>
		<updated>2014-11-11T21:14:59Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Better display for assignments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub.&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
We found that while the currently existing code covers most of the functionality, a major part of the functionality is missing. According to definition, the instructor should see the following on his home page:&lt;br /&gt;
*His courses&lt;br /&gt;
*Assignments for his courses&lt;br /&gt;
*Questionnaires&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91726</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91726"/>
		<updated>2014-11-11T21:11:00Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* General Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Information Display and Student Interaction=&lt;br /&gt;
&lt;br /&gt;
Expertiza is a web application developed using Ruby on Rails that serves as a peer-review system. The application allows students to submit and peer-review learning objects (articles, code, web sites, etc)&amp;lt;ref&amp;gt;[https://github.com/expertiza/expertiza Expertiza on GitHub]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://wikis.lib.ncsu.edu/index.php/Expertiza Expertiza Wiki Page]&amp;lt;/ref&amp;gt;. It is an open source project and it's codebase is maintained in GitHub. Our contribution in this project is by improving the display of assignments for all the instructors and also to improve the dashboard for student to view and compare their performance of the assignments.  &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible and missing parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Model&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  ScoreCache.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  View&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
  grades\view_my_scored.html.erb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Controller&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 grades_controller.rb, review_mapping_controller.rb,response_controller.rb&lt;br /&gt;
 &amp;lt;li&amp;gt;&lt;br /&gt;
  Database tables&lt;br /&gt;
 &amp;lt;/li&amp;gt;&lt;br /&gt;
 Assignments,Participants, score_caches, response_maps,responses&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;width:2%;&amp;quot;|Sr. No.&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot;|File Name&lt;br /&gt;
!style=&amp;quot;width:13%;&amp;quot;| Type&lt;br /&gt;
! style=&amp;quot;width:43%;&amp;quot;|Functionality for this project&lt;br /&gt;
|- style=&amp;quot;vertical-align:top;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 1 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; ScoreCache.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Model&lt;br /&gt;
| Makes an entry into score_cache table whenever a response is given/edited&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 2 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades\view_my_scores.html.erb &amp;lt;/code&amp;gt;&lt;br /&gt;
| View&lt;br /&gt;
| Modified in order to display all new features&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 3 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; grades_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get information all information about an assignment and its score which is average score of all reviews and plotting the graph for grade distinction&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 4 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; review_mapping_controller.rb &amp;lt;/code&amp;gt;&lt;br /&gt;
| Controller&lt;br /&gt;
| To get additional information about assignment like total reviews submitted&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 5 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Assignments &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| All information related to assignment&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 6 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Responses &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review response information&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 7 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; Score_caches &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Stores individual assignment review score information &lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;text-align:center;&amp;quot;|''''' 8 '''''&lt;br /&gt;
| &amp;lt;code&amp;gt; response_maps &amp;lt;/code&amp;gt;&lt;br /&gt;
| Table&lt;br /&gt;
| Mapping between response, reviewer and reviewee&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;br /&gt;
&lt;br /&gt;
=='''References'''==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91667</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91667"/>
		<updated>2014-11-11T14:21:28Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Specific Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information Display and Student Interaction&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two functionality is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91666</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91666"/>
		<updated>2014-11-11T13:58:31Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information Display and Student Interaction&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
&lt;br /&gt;
As the project was originally assigned to students two years ago, the functionality is mostly complete. The main concern is that, as the project was completed 2 years ago (in December 2012), it was made for an older version of rails.&lt;br /&gt;
&lt;br /&gt;
==General Approach==&lt;br /&gt;
Our general approach to the project would be as follows:&lt;br /&gt;
*Run the current project with rails 4&lt;br /&gt;
*Check the functionality to find out the incompatible parts&lt;br /&gt;
*Refactor the parts of code that do not function as expected and port them to rails 4 specification&lt;br /&gt;
*After making sure everything runs, refactor the entire code to make sure it follows the global code rules.&lt;br /&gt;
&lt;br /&gt;
==Specific Approach==&lt;br /&gt;
The specific approach to each of the two features is as  follows:&lt;br /&gt;
===Better display for assignments===&lt;br /&gt;
===Dashboard for students===&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91656</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91656"/>
		<updated>2014-11-11T02:21:58Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information Display and Student Interaction&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Background==&lt;br /&gt;
==Scope==&lt;br /&gt;
==Purpose==&lt;br /&gt;
&lt;br /&gt;
=Approach=&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91654</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91654"/>
		<updated>2014-11-11T02:20:36Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information Display and Student Interaction&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
==Scope==&lt;br /&gt;
=Approach=&lt;br /&gt;
=Testing=&lt;br /&gt;
=Files involved=&lt;br /&gt;
==Functionality of each file==&lt;br /&gt;
=Use case=&lt;br /&gt;
=UML diagram=&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91653</id>
		<title>CSC/ECE 517 Fall 2014/final E1471 asuv</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/final_E1471_asuv&amp;diff=91653"/>
		<updated>2014-11-11T02:19:57Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: Created page with &amp;quot;Information Display and Student Interaction  *Introduction* **Scope** *Approach* *Testing* *Files involved* **Functionality of each file** *Use case* *UML diagram*&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Information Display and Student Interaction&lt;br /&gt;
&lt;br /&gt;
*Introduction*&lt;br /&gt;
**Scope**&lt;br /&gt;
*Approach*&lt;br /&gt;
*Testing*&lt;br /&gt;
*Files involved*&lt;br /&gt;
**Functionality of each file**&lt;br /&gt;
*Use case*&lt;br /&gt;
*UML diagram*&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=91652</id>
		<title>CSC/ECE 517 Fall 2014</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014&amp;diff=91652"/>
		<updated>2014-11-11T02:18:15Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[CSC/ECE_517_Fall_2014/sample_page]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 22 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 19 mx]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 3 zq]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 lf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 4 wl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a a7 ch]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 rs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 jf]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 os]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 8 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 15 gs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 10 hu]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 kv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 21 as]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 24 sa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 sn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 6 rl]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 2 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 16 av]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 rm]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 1 sj]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 23 ss]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 20 rn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 22 sp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss M1454 rss]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 26 gn]]&lt;br /&gt;
&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 13 va]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 aa]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 9 kn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 11 ap]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 25 ks]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1a 7 kz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_6_bn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 10 zz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a 16 va]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a F1415 rv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1a_3_cp]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/ch1b 26 sa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_28_cg]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 29 ry]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b 30 cs]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_33_jy]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/ch1b_27_js]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1453 syy]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1463 vpd]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss E1465 oak]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1456_kdv]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_M1453_sst]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/oss_E1456_akk]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1455_asa]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1458_sst]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1457_ags]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1466_gjf]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_M1452_jns]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1462_nms]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_S1455_ajp]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_S1454_ccc]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1450_cxm]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1455_skn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_M1450_vda]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1467_rsv]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/OSS_E1464_vnn]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_M1451_ahs]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_E1451_las]]&lt;br /&gt;
*[[CSC/ECE 517 Fall 2014/OSS_E1461_knn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1460_aua]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/oss_E1459_jjr]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_E1474_akkn]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_E1472_gjfz]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_design_doc_M1451_hsss]]&lt;br /&gt;
*[[CSC/ECE_517_Fall_2014/final_E1471_asuv]]&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91034</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91034"/>
		<updated>2014-10-30T00:28:44Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* DynamicReviewMapping Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller and the ReportsController=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor two controllers, the ReportsController and the DynamicReviewMapping Controller. The ReportsController was thought to be generating reports for students, showing all their scores in a single page. The DynamicReviewMapping Controller is actually a helper to the ReviewMapping controller. The review mapping controller maps reviews to each user. Currently, there are two ways to assign reviews to user: The user can either select a submission himself, which he wants to review, or the site can suggest a review to the user. Currently, the user can give more than two reviews. The ReviewMapping controller had a method so that all the users are assigned reviews automatically. Originally, the plan was to assign only a fixed number of reviews to each user. The dynamic review controller helped the review mapping controller assign reviews so that the reviews are never mapped such that the last user does not have any review to map, except his own. For example, consider three users, U1, U2 and U3. If U1 is assigned U2's work and U2 is assigned U1's work, U3 would not have any work to review. The dynamic review mapping controller makes sure that such a condition does not occur.&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor these controllers. The ReportsController did not have any known use, and the DynamicReviewMapping Controller had changes to be made to make it conform to standards.&lt;br /&gt;
&lt;br /&gt;
==Modification to Existing Code==&lt;br /&gt;
&lt;br /&gt;
===ReportsController===&lt;br /&gt;
After searching through various controllers, looking for references used in the controller, we figured out that the code in the ReportsController was actually copied from the ResponseController, in December 2013. The ResponseController has been refactored since, and thus is an updated version. As of the usage, only the ResponseController has been referenced, and the ReportsController had never been used. We also extracted an older version of the ReportsController, that is, the one before it was replaced with code from the ResponseController. The code had a single method, and the method did not have any useful functionality. It was, thus, decided that the ReportsController should be removed from the Expertiza project, and that removing it would not have any effect on the overall project. Keeping it in would, on the other hand, create confusion for other people who would work on the project later.&lt;br /&gt;
&lt;br /&gt;
===DynamicReviewMapping Controller===&lt;br /&gt;
The changes to be made to the DynamicReviewController were small ones: &lt;br /&gt;
*changing if to unless where applicable&lt;br /&gt;
*change the “== true&amp;quot; and &amp;quot;== false&amp;quot; wherever applicable&lt;br /&gt;
*A code block was repeated 3 times through the file. We were supposed to refactor that to a function to make the code DRYer.&lt;br /&gt;
*Methods assign_metareviewers and assign_reviewers_team were too long. We were supposed to break them up for better readability.&lt;br /&gt;
*Method assign_reviewers_individual did not seem to be used. We were supposed to make sure, then delete the method if that was the case.&lt;br /&gt;
&lt;br /&gt;
None of this would actually change the functionality of the code. To make sure, we tried to look for the usage of the code. Again, after extensive searching, we figured that the code was never used. The DynamicReviewMapping controller, as stated above, depended on a set of rules that were not applicable anymore. The controller exists so that it is available, in case the rules are reverted to the original one. As such, currently the Controller is not used. We made the changes, but we have no way to check the code. We did the best we could, and we are sure that there are no errors in the refactored code.&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&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>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91013</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91013"/>
		<updated>2014-10-30T00:07:52Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Modification to Existing Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller and the ReportsController=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor two controllers, the ReportsController and the DynamicReviewMapping Controller. The ReportsController was thought to be generating reports for students, showing all their scores in a single page. The DynamicReviewMapping Controller is actually a helper to the ReviewMapping controller. The review mapping controller maps reviews to each user. Currently, there are two ways to assign reviews to user: The user can either select a submission himself, which he wants to review, or the site can suggest a review to the user. Currently, the user can give more than two reviews. The ReviewMapping controller had a method so that all the users are assigned reviews automatically. Originally, the plan was to assign only a fixed number of reviews to each user. The dynamic review controller helped the review mapping controller assign reviews so that the reviews are never mapped such that the last user does not have any review to map, except his own. For example, consider three users, U1, U2 and U3. If U1 is assigned U2's work and U2 is assigned U1's work, U3 would not have any work to review. The dynamic review mapping controller makes sure that such a condition does not occur.&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor these controllers. The ReportsController did not have any known use, and the DynamicReviewMapping Controller had changes to be made to make it conform to standards.&lt;br /&gt;
&lt;br /&gt;
==Modification to Existing Code==&lt;br /&gt;
&lt;br /&gt;
===ReportsController===&lt;br /&gt;
After searching through various controllers, looking for references used in the controller, we figured out that the code in the ReportsController was actually copied from the ResponseController, in December 2013. The ResponseController has been refactored since, and thus is an updated version. As of the usage, only the ResponseController has been referenced, and the ReportsController had never been used. We also extracted an older version of the ReportsController, that is, the one before it was replaced with code from the ResponseController. The code had a single method, and the method did not have any useful functionality. It was, thus, decided that the ReportsController should be removed from the Expertiza project, and that removing it would not have any effect on the overall project. Keeping it in would, on the other hand, create confusion for other people who would work on the project later.&lt;br /&gt;
&lt;br /&gt;
===DynamicReviewMapping Controller===&lt;br /&gt;
The&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&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>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91008</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=91008"/>
		<updated>2014-10-29T23:58:48Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Project Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller and the ReportsController=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor two controllers, the ReportsController and the DynamicReviewMapping Controller. The ReportsController was thought to be generating reports for students, showing all their scores in a single page. The DynamicReviewMapping Controller is actually a helper to the ReviewMapping controller. The review mapping controller maps reviews to each user. Currently, there are two ways to assign reviews to user: The user can either select a submission himself, which he wants to review, or the site can suggest a review to the user. Currently, the user can give more than two reviews. The ReviewMapping controller had a method so that all the users are assigned reviews automatically. Originally, the plan was to assign only a fixed number of reviews to each user. The dynamic review controller helped the review mapping controller assign reviews so that the reviews are never mapped such that the last user does not have any review to map, except his own. For example, consider three users, U1, U2 and U3. If U1 is assigned U2's work and U2 is assigned U1's work, U3 would not have any work to review. The dynamic review mapping controller makes sure that such a condition does not occur.&lt;br /&gt;
&lt;br /&gt;
We were supposed to refactor these controllers. The ReportsController did not have any known use, and the DynamicReviewMapping Controller had changes to be made to make it conform to standards.&lt;br /&gt;
&lt;br /&gt;
==Modification to Existing Code==&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&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>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90471</id>
		<title>CSC/ECE 517 Fall 2014/oss E1457 ags</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/oss_E1457_ags&amp;diff=90471"/>
		<updated>2014-10-29T13:12:50Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Expertiza - Refactoring DynamicReviewMapping Controller */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Expertiza - Refactoring DynamicReviewMapping Controller and the ReportsController=&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
It is time consuming to assess project work in a large classroom environment, and one of the best techniques to achieve this is to have students assist in this assessment.  If each student is asked to assess a few (say, one to five) other students or student teams, the task requires a reasonable amount of effort; and that effort does not increase as the class gets larger. &amp;quot;''Expertiza is a system for managing all kinds of communication that is involved in assessment: double-blind communications between authors and reviewers, assessment of teammate contributions, evaluations by course staff, and surveys of students to assess the assignment and the &lt;br /&gt;
peer-review process.''&amp;quot; &amp;lt;ref&amp;gt;http://www.igi-global.com/book/monitoring-assessment-online-collaborative-environments/773&amp;amp;f=e-book&amp;lt;/ref&amp;gt;&lt;br /&gt;
''&amp;quot;Expertiza project uses peer review to create reusable learning objects.''&amp;quot;&amp;lt;ref&amp;gt;http://expertiza.ncsu.edu/&amp;lt;/ref&amp;gt; Students select from a list of tasks to be performed, with several students selecting each task. Then they prepare their work and submit it to an electronic peer-review system. The work is then reviewed by other students, who offer comments to help the submitters improve their work. The best submissions for each task are then selected for use in later courses. Expertiza gets students working together to improve others’ learning experiences. It helps them learn, by making them think through the lecture material and apply it to a real-world situation, just as they might do in an on-the-job situation. These learning objects can be improved iteratively; for example, the next year’s class can be presented with the examples developed by students the previous year, and asked to identify shortcomings and develop improved examples.&amp;lt;ref&amp;gt;http://scholar.google.com/scholar?q=%22Reusable+learning+objects+through+peer+review%3A+The+Expertiza+approach%22+%22The+Expertiza+platform+is+a+divide-and-conquer%22&amp;amp;btnG=&amp;amp;hl=en&amp;amp;as_sdt=0%2C34&amp;lt;/ref&amp;gt; More information on Expertiza can be found [https://github.com/expertiza/expertiza here].&lt;br /&gt;
&lt;br /&gt;
==Refactoring in Ruby==&lt;br /&gt;
Refactoring helps to&amp;lt;ref&amp;gt;http://www.refactoringinruby.com/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Understand what led to poor code design&lt;br /&gt;
*Fix code which is difficult to understand&lt;br /&gt;
*Express each idea “once and only once”&lt;br /&gt;
*Recognize missing or inadequately formed classes&lt;br /&gt;
*Simplify overly complex relationships between classes&lt;br /&gt;
*Achieve the right balance of responsibilities among objects&lt;br /&gt;
*Make code easier to test and more maintainable&lt;br /&gt;
&lt;br /&gt;
===Refactoring Techniques===&lt;br /&gt;
There are many documented refactoring techniques, and a few common ones are below.&amp;lt;ref&amp;gt;http://www.integralist.co.uk/posts/refactoring-techniques/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*'''Rename Method''': Renaming identifiers can reduce the need for code comments and nearly always helps to promote greater clarity.&lt;br /&gt;
*'''Introduce Explaining Variable''': So here is a technique specifically based around the premise of renaming.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unless &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Should be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
caps_not_found = &amp;quot;This is a String with some CAPS&amp;quot;.scan(/([A-Z])/).empty?&lt;br /&gt;
&lt;br /&gt;
unless caps_not_found&lt;br /&gt;
  puts &amp;quot;capitalised text was found&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Extract Method''':  It consists of breaking up long methods by shifting overly complex chunks of code into new methods which have very descriptive identifiers.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot; # notice this is duplication&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Foo&lt;br /&gt;
  attr_reader :bar&lt;br /&gt;
&lt;br /&gt;
  def initialize bar&lt;br /&gt;
    @bar = bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something&lt;br /&gt;
    baz&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def do_something_else&lt;br /&gt;
    baz&lt;br /&gt;
    puts &amp;quot;Something else&amp;quot;&lt;br /&gt;
    puts bar&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def baz&lt;br /&gt;
    puts &amp;quot;my baz&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Inline Method''': Sometimes you want the opposite of the Extract Method technique. Imagine a method exists whose content is already simple and clear, and whose identifier adds no extra benefit. So to fix this problem we'll convert the method invocation into an inlined piece of code.&lt;br /&gt;
&lt;br /&gt;
*'''Pull Up Method''': When you have duplicated code across two separate classes then the best refactoring technique to implement is to pull that duplicate code up into a super class so we DRY (Don't Repeat Yourself) out the code and allow it to be used in multiple places without duplication (meaning changes in future only have to happen in one place).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `FemalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  # This is duplicated in the `MalePerson` class&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Person&lt;br /&gt;
  attr_reader :first_name, :last_name&lt;br /&gt;
&lt;br /&gt;
  def initialize first_name, last_name&lt;br /&gt;
    @first_name = first_name&lt;br /&gt;
    @last_name = last_name&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def full_name&lt;br /&gt;
    first_name + &amp;quot; &amp;quot; + last_name&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class MalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;M&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
class FemalePerson &amp;lt; Person&lt;br /&gt;
  def gender&lt;br /&gt;
    &amp;quot;F&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Introduce Named Parameter''':When method arguments are unclear then convert them into named parameters so they become clearer (and easier to remember).&lt;br /&gt;
&lt;br /&gt;
==Project Description==&lt;br /&gt;
&lt;br /&gt;
==Modification to Existing Code==&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
*[http://www.refactoringinruby.com/ Refactoring In Ruby]&lt;br /&gt;
*[http://refactoring.com/ Refactoring]&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>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=88758</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=88758"/>
		<updated>2014-09-28T01:06:57Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&amp;lt;ref name=&amp;quot;Link1&amp;quot;&amp;gt;http://simply.liftweb.net/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&amp;lt;ref name=&amp;quot;Book1&amp;quot;&amp;gt;[http://www.manning.com/perrett/ Lift in action]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:View_Lift.jpg&amp;diff=85510</id>
		<title>File:View Lift.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:View_Lift.jpg&amp;diff=85510"/>
		<updated>2014-09-14T20:09:33Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85509</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85509"/>
		<updated>2014-09-14T20:09:02Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* View First Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:View_Lift.jpg]]&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:View_Lift.JPG&amp;diff=85508</id>
		<title>File:View Lift.JPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:View_Lift.JPG&amp;diff=85508"/>
		<updated>2014-09-14T20:08:13Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85499</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85499"/>
		<updated>2014-09-14T19:59:34Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Nature of the language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Future-Proof&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot; /&amp;gt; =====&lt;br /&gt;
Scala particularly shines when it comes to scalable server software that makes use of concurrent and synchronous processing, parallel utilization of multiple cores, and distributed processing in the cloud.&lt;br /&gt;
&lt;br /&gt;
Its functional nature makes it easier to write safe and performant multi-threaded code. There’s typically less reliance on mutable state and Scala’s futures and actors provide powerful tools for organizing concurrent system at a high-level of abstraction.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85492</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85492"/>
		<updated>2014-09-14T19:55:47Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt; :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
http://www.google.com/imgres?imgurl=http%3A%2F%2Fmedia.dcentertainment.com%2Fsites%2Fdefault%2Ffiles%2FGalleryBatman75_1900x900_BM1_53333ef4f048e4.80983462.jpg&amp;amp;imgrefurl=http%3A%2F%2Fwww.dccomics.com%2Fcharacters%2Fbatman&amp;amp;h=900&amp;amp;w=1900&amp;amp;tbnid=zui8516AsW2c4M%3A&amp;amp;zoom=1&amp;amp;docid=m6J6QrzCuGXkRM&amp;amp;ei=i_IVVOjWL9fCsATQo4HYAw&amp;amp;tbm=isch&amp;amp;ved=0CCAQMygCMAI&amp;amp;iact=rc&amp;amp;uact=3&amp;amp;dur=0&amp;amp;page=1&amp;amp;start=0&amp;amp;ndsp=26&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85487</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85487"/>
		<updated>2014-09-14T19:54:57Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java&amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt; =====&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85484</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85484"/>
		<updated>2014-09-14T19:54:27Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
[http://www.scala-lang.org/ Scala] stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. &lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Compatibility with Java ===== &amp;lt;ref name = &amp;quot;ScalaSite&amp;quot;&amp;gt;http://www.scala-lang.org/what-is-scala.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scala runs on the JVM. Java and Scala classes can be freely mixed, no matter whether they reside in different projects or in the same. They can even mutually refer to each other, the Scala compiler contains a subset of a Java compiler to make sense of such recursive dependencies. Java libraries, frameworks and tools are all available. Build tools like ant or maven, IDEs like Eclipse, IntelliJ, or Netbeans, frameworks like Spring or Hibernate all work seamlessly with Scala. Scala runs on all common JVMs and also on Android. The Scala community is an important part of the Java ecosystem. Popular Scala frameworks, including Akka, Finagle, and the Play web framework include dual APIs for Java and Scala.&lt;br /&gt;
&lt;br /&gt;
===== Nature of the language =====&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. Programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85479</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85479"/>
		<updated>2014-09-14T19:49:02Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Lift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85478</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85478"/>
		<updated>2014-09-14T19:48:46Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Scala */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85477</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85477"/>
		<updated>2014-09-14T19:47:39Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Lift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/0/09/View_first.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85476</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85476"/>
		<updated>2014-09-14T19:46:53Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Support for Java */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/0/09/View_first.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
Lift runs on Scala. Scala runs on top of the JVM. This means that any and all of the java libraries and web containers can be used in running Lift applications. Java files can be used inside the project, such that Lift references the code used in a Java file, while Java can reference the code used in a Lift file&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85473</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85473"/>
		<updated>2014-09-14T19:29:00Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* Lift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/0/09/View_first.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Characteristics ====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates.&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85471</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85471"/>
		<updated>2014-09-14T19:28:20Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* XML Processing Capabilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
[[File:http://wiki.expertiza.ncsu.edu/images/0/09/View_first.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Support for Java =====&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
===== Support for Advanced Features =====&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. Lift's powerful support for AJAX and Comet allows the developer to use Web 2.0 features with very little effort. &lt;br /&gt;
&lt;br /&gt;
====== Comet ======&lt;br /&gt;
Lift leverages Scala's Actor library to provide a message-driven framework for Comet updates. In most cases, adding Comet support to a page just involves extending a trait to define the rendering method of the paage and adding an extra function call the links to dispatch the update message. Lift handles all of the backend and page-side coding to effect the Comet polling&lt;br /&gt;
&lt;br /&gt;
====== AJAX ======&lt;br /&gt;
&lt;br /&gt;
AJAX support includes special handlers for doing AJAX form submission via JSON, and almost any link function can easily be turned into an AJAX version with a few keystrokes. Lift has a class hierarchy for encapsulating JavaScript calls via direct JavaScript, jQuery or Yahoo User Interface library. The code can be generated automatically, reducing or eliminating the need to put JavaScript logic into the templates. &lt;br /&gt;
&lt;br /&gt;
===== Other Characteristics =====&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85465</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85465"/>
		<updated>2014-09-14T19:19:41Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* View First Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket], to bind user-generated data into the presentation layer.&lt;br /&gt;
&lt;br /&gt;
The View-First template means that the we start with an XML template, i.e., the view, and then embed, or execute, independent components to fill in the template. The benefit of this is that the page components become more modular, which makes modifying pages and reusing page components much simpler.&lt;br /&gt;
&lt;br /&gt;
===== XML Processing Capabilities =====&lt;br /&gt;
&lt;br /&gt;
Lift's templating is built on the XML processing capabilities of the scala language, and allows things such as:&lt;br /&gt;
* Nested templates&lt;br /&gt;
* Simple injection of user-generated content&lt;br /&gt;
* Advanced data capabilities.&lt;br /&gt;
&lt;br /&gt;
Lift's advanced template and XML processing allows the developer to essentially write custom tag libraries at a very less cost in terms of time and effort.&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85464</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85464"/>
		<updated>2014-09-14T19:11:57Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: /* More Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
===== View First Approach =====&lt;br /&gt;
Lift does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. Lift takes the approach that there should be no code in the presentation layer, but it should be flexible enough to accommodate any conceivable uses. For this, Liift usess a powerful templating system, [http://wicket.apache.org Wicket]&lt;br /&gt;
&lt;br /&gt;
The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Download Links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://liftweb.net/download.html &amp;lt;br /&amp;gt;&lt;br /&gt;
2. https://github.com/lift/framework &amp;lt;br /&amp;gt;&lt;br /&gt;
3. http://scala-ide.org/docs/tutorials/lift24scalaide20/index.html &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/ &amp;lt;br /&amp;gt;&lt;br /&gt;
2. http://www.liftweb.net/  &amp;lt;br /&amp;gt;&lt;br /&gt;
3. https://www.assembla.com/wiki/show/liftweb/Getting_Started &amp;lt;br /&amp;gt;&lt;br /&gt;
4. http://hedleyproctor.com/2011/10/tutorial-building-your-first-lift-app-with-sbt/ &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85459</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85459"/>
		<updated>2014-09-14T19:04:54Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/&lt;br /&gt;
2. http://www.liftweb.net/&lt;br /&gt;
3. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85457</id>
		<title>CSC/ECE 517 Fall 2014/ch1a 4 lf</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2014/ch1a_4_lf&amp;diff=85457"/>
		<updated>2014-09-14T19:03:50Z</updated>

		<summary type="html">&lt;p&gt;Sjshah: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lift is a web application framework designed for Scala Programming Language. It was designed by David Polka who was dissatisfied with Ruby on Rails. It was launched on February 26, in 2007 as an Open Source framework under the Apache 2.0 License.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
Lift is an expressive framework for building web applications using Scala. It borrows concept from Grails, Ruby on Rails, Seaside, Wicket and Django&amp;lt;ref name = &amp;quot;LiftWiki&amp;quot;&amp;gt;[http://en.wikipedia.org/wiki/Lift_(web_framework) Lift (web framework), Wikipedia]&amp;lt;/ref&amp;gt;. Lift is designed to make powerful techniques easily accessible, while keeping the overall framework simple and flexible.&amp;lt;ref name = &amp;quot;Book&amp;quot;&amp;gt; Derek Chen-Beccker et al. The Definitive Guide to Lift &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Just like Rails, it favors convention over configuration: it decreases the number of decisions that developers need to make. But, unlike Rails, it does not follow the Model-View-Controller concept. It rather follows the &amp;quot;View First&amp;quot; approach, i.e., it focuses on what to display on the page rather than focusing on the programming of the objects and the logic that builds the page. The creators of Lift have cherry-picked the best ideas from a number of other frameworks, while adding some ideas on their own. Lift is intended to work out of the box and to make creating web pages as efficient and productive as possible&amp;lt;ref name=&amp;quot;Book&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As Lift is a framework for Scala and Scala is very compatible with Java, any and all of the java libraries and web containers can be used in running Lift applications.&lt;br /&gt;
&lt;br /&gt;
Dynamic web content is authored into the web pages via templates using the standard HTML5 or XHTML editors. It also provides native support for advanced web development techniques such as Comet and Ajax.&lt;br /&gt;
&lt;br /&gt;
The main characteristics of the Lift framework are:&lt;br /&gt;
* Resistant to common vulnerabilities&lt;br /&gt;
* Fast to build, concise and easy to maintain&lt;br /&gt;
* High performance and scale in the real world to handle big traffic levels&lt;br /&gt;
* Interactive like a desktop application&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
Scala stands for &amp;quot;Scalable Language&amp;quot;. Scala is a relatively new language developed by Martin Odersky and his programming language research group at EPFL in Switzerland. The Scala programming language can be used for making general software application, or for web development. Scala is a pure-bred object-oriented language: Every value is an object, and every operation is a method call. The language is quite similar to Ruby.&lt;br /&gt;
&lt;br /&gt;
The biggest difference between Ruby and Scala is that, Scala compiles to Java bytecode and runs on the Java Virtual Machine. Thus, it is possible to mix up Java and Scala. Both the languages can be used together for a single project; Scala code can refer the Java code and Java code can refer Scala code without any errors turning up. Scala introduces some very powerful features designed to make the developer more productive. Some of the features are :&lt;br /&gt;
* Extremely rich type system&lt;br /&gt;
* A powerful type inference&lt;br /&gt;
* Native XML processing&lt;br /&gt;
* Full support for closures and functions as objects&lt;br /&gt;
* Extensive high-level library&lt;br /&gt;
&lt;br /&gt;
Scala is called &amp;quot;the statically typed dynamic language&amp;quot;&amp;lt;ref name = &amp;quot;Book&amp;quot;/&amp;gt;. It is possible to write code as quickly as with dynamically typed languages like Python, Ruby etc, but the language offers compile-time type safety like Java.&lt;br /&gt;
&lt;br /&gt;
Scala is a also a hybrid functional and object-oriented language, which means one can get the power of the higher-level functional programming languages while retaining the modularity and reusability of OO components. The language uses very strong static type system and the compiler deciphers the types of the variables used. &lt;br /&gt;
Just like Ruby, programs written in Scala can be very concise and thus, are smaller in size than in most languages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Basic Scala&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skip this if you know Scala and how to use Lift.&lt;br /&gt;
&lt;br /&gt;
Scala is an extremely flexible and feature-ful language, but you don't need to know much about it to get started with Lift.  Read more about Scala some time, but here is all I think you need to know to get started if you already know Java or a similar language.&lt;br /&gt;
&lt;br /&gt;
A Scala function definition looks like this:&lt;br /&gt;
&lt;br /&gt;
''def [function-name] ([parameter-name]: [parameter-type]) : [return-type] = [function-body]''&lt;br /&gt;
    &lt;br /&gt;
so&lt;br /&gt;
&lt;br /&gt;
''def taste (food: Consumable) : Opinion = evaluate(food)'' &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
defines a function called taste that takes a Consumable as a parameter (food) and returns an Opinion&lt;br /&gt;
calls evaluate and returns the result, which must be an Opinion &lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The function body starts after the equals sign (=) and often starts on the same line&lt;br /&gt;
The last value is returned - no explicit return is required, but since the language is strongly typed there is protection against accidentally returning meaningless values of the wrong type&lt;br /&gt;
Now you can read Scala.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt; Java VS Scala &amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building class definitions, it’s common to have to build so-called getter and setter methods in&lt;br /&gt;
order to set the values of that instance. This typically creates a lot of noise in the implementation (as&lt;br /&gt;
seen in the Java example that follows). Scala combats this by using the case modifier to automatically&lt;br /&gt;
provision standard functionality into the class definition. Given an instance of the Person case class,&lt;br /&gt;
calling person.name would return the name value.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;div&amp;gt; &lt;br /&gt;
        {|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;  cellpadding=&amp;quot;4&amp;quot;  cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
        | JAVA&lt;br /&gt;
        | SCALA&lt;br /&gt;
        |-&lt;br /&gt;
| public class Person {&amp;lt;br /&amp;gt;&lt;br /&gt;
private int _age;&amp;lt;br /&amp;gt;&lt;br /&gt;
private String _name;&amp;lt;br /&amp;gt;&lt;br /&gt;
public Person(String n, int a){&amp;lt;br /&amp;gt;&lt;br /&gt;
_age = a;&amp;lt;br /&amp;gt;&lt;br /&gt;
_name = n;&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
String name(){ return _name; }&amp;lt;br /&amp;gt;&lt;br /&gt;
int age(){ return _age; }&amp;lt;br /&amp;gt;&lt;br /&gt;
}&amp;lt;br /&amp;gt;&lt;br /&gt;
        | case class Person(&amp;lt;br /&amp;gt;&lt;br /&gt;
name: String, age: Int)&lt;br /&gt;
        |}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== More Information ==&lt;br /&gt;
&lt;br /&gt;
=== Lift ===&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
&lt;br /&gt;
==== Features ====&lt;br /&gt;
&lt;br /&gt;
== Helpful Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Lift Tutorials links&amp;lt;/h3&amp;gt;&lt;br /&gt;
1. http://simply.liftweb.net/&lt;br /&gt;
2. http://www.liftweb.net/&lt;br /&gt;
3. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Helpful Links for Lift resources&amp;lt;/h3&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Resource&lt;br /&gt;
! Description&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Main Lift site&lt;br /&gt;
| First and foremost is the main Lift homepage. Here you’ll find the latest &lt;br /&gt;
news about Lift, regularly updated as time goes by. This page also has &lt;br /&gt;
links to the source code, the issue tracker, and the wiki.&lt;br /&gt;
| http://liftweb.net&lt;br /&gt;
|-&lt;br /&gt;
| Assembla&lt;br /&gt;
| Lift moved to the Assembla platform for its wiki and bug-tracking requirements&lt;br /&gt;
some time ago, and since then it has accumulated a fair amount&lt;br /&gt;
of community-created articles.&lt;br /&gt;
| https://www.assembla.com/wiki/show/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| Mailing list&lt;br /&gt;
| The Google group is the official support channel for Lift. If you have a&lt;br /&gt;
question, you can come to the mailing list and find a friendly, responsive&lt;br /&gt;
community that will be more than happy to answer your questions.&lt;br /&gt;
| http://groups.google.com/group/liftweb&lt;br /&gt;
|-&lt;br /&gt;
| IRC channel&lt;br /&gt;
| IRC isn’t as popular as it once was, but you’ll still find some of the Lift&lt;br /&gt;
team hanging out in IRC from time to time.&lt;br /&gt;
| https://www.freenode.net&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sjshah</name></author>
	</entry>
</feed>