E1936 Specialized Rubrics: Difference between revisions
No edit summary |
|||
Line 1: | Line 1: | ||
This wiki page describes the work that | This wiki page describes the work and goals that have been completed and achieved while implementing Expertiza Project "E1936. Specialized Rubrics for Different Topic Types (e.g., Servo project, refactoring project)" for the CSC/ECE 517 "Object-Oriented Design and Development" class, in the Spring semester of the 2019. | ||
__TOC__ | __TOC__ | ||
== Introduction == | == Introduction == | ||
This Wiki page is created per CSC/ECE 517: "Object-Oriented Design and Development", Expertiza Project requirements (Spring, 2019). | This Wiki page is created per CSC/ECE 517: "Object-Oriented Design and Development", Expertiza Project requirements (Spring, 2019). | ||
Our team was assigned to "[https://docs.google.com/document/d/1Ozw2Bj2u_LyeKUdDqAyQtz1stEIKrxkmRnwmNyUgmzw/edit#heading=h.z86zstcoj6u7 E1936]. Specialized Rubrics for Different Topic Types (e.g., Servo project, refactoring project)" Expertiza Project. In this page we describe what work has been completed by our team to ... Each section below provides clear and descriptive review on the subject we cover. | Our [http://wiki.expertiza.ncsu.edu/index.php/E1936_Specialized_Rubrics#Team_Contacts_and_Contribution team] was assigned to "[https://docs.google.com/document/d/1Ozw2Bj2u_LyeKUdDqAyQtz1stEIKrxkmRnwmNyUgmzw/edit#heading=h.z86zstcoj6u7 E1936]. Specialized Rubrics for Different Topic Types (e.g., Servo project, refactoring project)" Expertiza Project. In this page we describe what work has been completed by our team to ... Each section below provides clear and descriptive review on the subject we cover. | ||
We start with introduction to Expertiza application. We describe how and why Expertiza is used by students and teaching staff for CSC/ECE 517 class. | We start with introduction to Expertiza application. We describe how and why Expertiza is used by students and teaching staff for CSC/ECE 517 class. | ||
=== Expertiza === | === Expertiza === | ||
[https://expertiza.ncsu.edu/ Expertiza] is a ... | [https://expertiza.ncsu.edu/ Expertiza] is a ... | ||
== Project Description == | == Project Description == | ||
Here we describe project details starting with Problem statement, description of what needs to be done, previous work that was done ... | Here we describe project details starting with Problem statement, description of what needs to be done, previous work that was done ... | ||
=== Problem Statement === | === Problem Statement === | ||
In CSC/ECE 517, there are several types of topics that could be covered in a single class assignment. | In CSC/ECE 517, there are several types of topics that could be covered in a single class assignment. | ||
* Code base | * Code base | ||
Line 37: | Line 33: | ||
=== What Needs to be Done === | === What Needs to be Done === | ||
* In assignment#edit page "Rubrics" tab, add a checkbox to specify whether rubric should vary by topic. | * In assignment#edit page "Rubrics" tab, add a checkbox to specify whether rubric should vary by topic. | ||
* In assignment#edit page "Topics" tab, add a dropdown next to each topic to specify which rubric is associated with the topic. | * In assignment#edit page "Topics" tab, add a dropdown next to each topic to specify which rubric is associated with the topic. | ||
Line 49: | Line 44: | ||
=== Previous Work === | === Previous Work === | ||
Here we describe what has been done by other team... | Here we describe what has been done by other team... | ||
# [http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2018/E1873_Specialized_rubics_for_different_topic_types Wiki] | |||
# [https://github.com/expertiza/expertiza/pull/1327 Pull Request] | |||
# [https://drive.google.com/file/d/1UrLb0Ula_Lb_F4MOrdC-s6xng6B08VYu/view Video Demo] | |||
== Project Implementation == | == Project Implementation == | ||
Line 186: | Line 183: | ||
* Expertiza Wiki [http://wikis.lib.ncsu.edu/index.php/Expertiza] | * Expertiza Wiki [http://wikis.lib.ncsu.edu/index.php/Expertiza] | ||
* Rspec Documentation [https://relishapp.com/rspec] | * Rspec Documentation [https://relishapp.com/rspec] | ||
* Wiki with Previous Work [http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_517_Fall_2018/E1873_Specialized_rubics_for_different_topic_types] | |||
* Pull Request of the Previous Work [https://github.com/expertiza/expertiza/pull/1327] |
Revision as of 18:03, 5 April 2019
This wiki page describes the work and goals that have been completed and achieved while implementing Expertiza Project "E1936. Specialized Rubrics for Different Topic Types (e.g., Servo project, refactoring project)" for the CSC/ECE 517 "Object-Oriented Design and Development" class, in the Spring semester of the 2019.
Introduction
This Wiki page is created per CSC/ECE 517: "Object-Oriented Design and Development", Expertiza Project requirements (Spring, 2019).
Our team was assigned to "E1936. Specialized Rubrics for Different Topic Types (e.g., Servo project, refactoring project)" Expertiza Project. In this page we describe what work has been completed by our team to ... Each section below provides clear and descriptive review on the subject we cover.
We start with introduction to Expertiza application. We describe how and why Expertiza is used by students and teaching staff for CSC/ECE 517 class.
Expertiza
Expertiza is a ...
Project Description
Here we describe project details starting with Problem statement, description of what needs to be done, previous work that was done ...
Problem Statement
In CSC/ECE 517, there are several types of topics that could be covered in a single class assignment.
- Code base
- Expertiza
- Mozilla
- etc.
- Goal
- Refactoring
- Testing
- etc.
However, currently we can only specify one kind of rubric for an assignment. This means that teams working on different topics will be evaluated using the same rubric. With this setup, it's not possible to fine-tune rubrics for different topics - rubrics tend to be overly general.
Feature Description
I feel like we need to talk about what that feature enables us or teaching staff to do here...
What Needs to be Done
- In assignment#edit page "Rubrics" tab, add a checkbox to specify whether rubric should vary by topic.
- In assignment#edit page "Topics" tab, add a dropdown next to each topic to specify which rubric is associated with the topic.
- This dropdown should appear only if rubric should vary by topic, per the Rubrics tab.
- By default, the rubric for each course project will be the one specified in “Rubrics” tab.
- The dropdown value can overwrite the default rubric.
- Be careful when making changes to the code
- The signup_sheet_controller should have as little to do as possible with the selection of rubrics.
- Anything not germane to selecting topics should be in another controller or (more probably) a helper.
- Create a DB migration to allow rubric to vary by topic as well as by round.
Previous Work
Here we describe what has been done by other team...
Project Implementation
Here is the project implementation.
Design Strategy
- app/views/assignments/edit/_rubrics.html.erb
- Add a new checkbox for whether or not rubrics vary by topic
- app/views/assignments/edit.html.erb
- Break out code dealing with topics into app/views/assignments/edit/_topics.html.erb
- app/views/assignments/edit/_topics.html.erb
- Add a new column in the topics table for choosing rubric(s)
- New column only visible if rubrics vary by topic, per Rubrics tab
- New column has multiple rounds per topic only if rubrics vary by round, per Rubrics tab
- Default value for any rubric is that rubric which is shown on Rubrics tab
- Use the code in app/views/assignments/edit/_rubrics.html.erb for inspiration only
- Break as much actual work as possible out into helper methods that are simply called from this view
- Views are not intended to do heavy lifting
- Use as little JavaScript as possible
- This is a Ruby On Rails project, not a JS project
- Add a new column in the topics table for choosing rubric(s)
- app/helpers/assignment_helper.rb
- Improve readability of assignment_questionnaire method
- Add comment block at the top describing the purpose and basic strategy of the method
- Rename 'number' parameter to clarify the purpose of the parameter
- Expand functionality of assignment_questionnaire method
- Add ability to get assignment questionnaires by topic as well as by round
- Like round, topic parameter should be optional
- Improve readability of assignment_questionnaire method
- spec/helpers
- Add spec/helpers/assignment_helper_spec.rb file
- Thoroughly test app/helpers/assignment_helper.rb assignment_questionnaire method
- Add tests for any newly created helpers or helper methods
- Add spec/helpers/assignment_helper_spec.rb file
- db/migrate
- Create a new migration to link topics to rubrics
- This migration will add a column to the table "assignment_questionnaires"
- This table keeps track of which questionnaires are used for which assignments
- questionnaire_id links to a questionnaire
- assignment_id links to an assignment
- used_in_round links to a particular round of an assignment
- the migration will add "topic_id" to link also to a particular topic within an assignment
- The original suggestion was to "add questionnaire_id in sign_up_topics table"
- This suggestion would allow the rubric to vary by topic but NOT by round of assignment
- As the current implementation supports rubric varying by round of assignment, we should keep this support
- The previous submission for this feature added a new table "topic_questionnaires"
- This is not necessary as we already have a table which associates questionnaires with assignments and rounds
- We are better off associating questionnaires with topics in this existing table to limit code changes and enhance code readability
- Create a new migration to link topics to rubrics
Implementation
More of the code part section. With some code snippets.
Files Involved
Here may be list the files that were involved to implement the project.
How To
Here we can give descriptions on how to use new feature.
Adding a New Rubric
- [to be populated after coding is complete]
Selecting a Rubric for a Topic
- [to be populated after coding is complete]
Project Testing
To test code implementation, correctness of the added feature, verify that the team did not break any existing functionalities in the Expertiza, and ensure that no bugs were introduced in the code, we utilized the following Test Strategy:
- Code inspection
- Run and pass existing RSpec Tests
- Develop New RSpec Tests
- Run through live UI to test a feature using Expertiza instance
Rspec Testing
Our strategy for gaining confidence that our code changes did not break anything was as follows:
- Run all existing RSpec tests on any changed files, after our changes, to ensure that we have not introduced any failures.
- The commands and results are shown below.
[to be populated after coding is complete]
- Write new comprehensive RSpec tests, for all new methods.
- Run these tests, to ensure that the new code works as intended.
- The commands and results are shown below.
[to be populated after coding is complete]
- The test suite for a single new method is below.
- There are many such suites in (TODO add filename(s)).
- This example illustrates our general strategy:
- test missing input
- test bad input
- test various acceptable forms of input
- test scenarios that lead to "true" and to "false" return values
[to be populated after coding is complete]
UI Testing
Here we describe UI Testing that has performed. Include Screenshots maybe?
Conclusion
Conclude on the project (anything your want to add).
Useful Links
In this section we provide useful links related to the work that has been completed by our team.
- Forked Project Repository
- [(add link here) Pull Request]
- [(add link here) Video Demonstration of Specialized Rubrics]
- [(add link here) Video Demonstration of Passing Rspec Tests]
Team Contacts and Contribution
We have 4 (four) members in our team and 1 (one) mentor was also assigned to us. For any project-related questions/concerns please contact us:
- Aurora Tiffany-Davis - attiffan@ncsu.edu
- Ginger Balmat - gabalmat@ncsu.edu
- Joe Hutchinson - jehutch3@ncsu.edu
- Nikolay Titov - ngtitov@ncsu.edu
- Zhewei Hu (mentor) - zhu6@ncsu.edu
For any questions or concerns related to the project design, implementation, testing of the feature developed by our team, please contact an engineer who worked closely on the topic of your interest based on the Contribution Assignment Grid we created to keep track of our progress and contribution. Please carbon copy all team members and our mentor in the email.