CSC/ECE 517 Fall 2017/E17A2. Lightweight badging system based on Credly
Purpose
The implementation of a badging system provides a boosted visual motivation for the students to work towards achieving that badge. This has the ability to improve the overall class performance.
Team: Ankit Jain
Rajan Alwan
Riken Shah
Sanya Kathuria
Mentor - Zhewei Hu,(zhu6@ncsu.edu)
Problem Statement
The aim of this project is to implement a badging system for expertiza where certain students are awarded with badges when certain criterias are met which may include exceptional academic performance in assignments, project submissions etc. We will be using Credly to make Badges. We will be working on building two badges:
- Good Reviewer
- Good Teammate
Flowchart Of the System
Description of the Badges
Why Develop Badge-System?
The use of badges will encourage students to have a visual motivation based on their achievements and thus perform better. For every assignment in Expertiza, we have students perform differently on a scale of 100 based on the reviews their projects receive from their peers. The topper badges will be used to honor the team(s) which scores the maximum for a assignment.
What does the badge-system do?
We have developed two badges — "Good Reviewer" and "Good Teammate" but the design has been developed in such a way that the badging system can be easily extended to include more badges in the future. The "Good Reviewer" badge will be awarded to students who receive very high review grades. The "Good Teammate" badge will be awarded to team members who receive very high teammate review scores. By default, the "threshold" for earning these badges is set to a score of 95, but this value is configurable on a per-assignment basis by the instructor. A new "Badges" tab will be added for instructors on the "Edit Assignment" page where instructors can add badges and configure the badge criteria for a given assignment. Badges a student has earned can be seen when they view their "Task List" page, and an instructor will be able to view all badges earned by students when they view the "Participants List" page.
What are the badges and Who will be awarded?
Good Reviewer
Icon
Who will be Awarded
“Good reviewer” is the badge that one student receive very high review grades assigned by teaching staff (by default 95).
Good Teammate
Icon
Who will be Awarded
In Expertiza students are required to give reviews to the work of other teams. This is evaluated on a scale of 100% by the teaching staff. “Good teammate” is the badge that each team member receive very high teammate review scores (by default 95).
How do we make badges configurable?
The criterion to assign badge should be configurable. After creating a new assignment, the threshold for the badges can be specified in assignments/edit page. The below image shows the how the page looks like.
Modified Files
Tables to be Modified
- We have created a table named “badges”, with the following attributes:
- id: primary key
- name: varchar
- description: varchar
- We have created a mapping table named “assignment_badges”, with the following attributes:
- id: primary key
- badge_id: foreign key
- assignment_id: foreign key
- threshold: int
- We have created a mapping table named “awarded_badges”, with the following attributes:
- id: primary key
- badge_id: foreign key
- participant_id: foreign key
Files to be Modified
- We have inserted the new code related to “Good Teammate” badge to teammate_review_response_map.rb.
- We have inserted the new code related to “Good Reviewer” badge to review_response_map.rb
- We have added badges to student_task/list page and a new column named Badge.
- We have added badges to participants/list for instructor to view.
- We have added a tab to edit the badge attributes in the assignments#edit page.
How does it look like?
Rationale behind the impelmentation :
1. As per requirement, the badges need to be displayed in the list view for both instructors and students. And thus, the list.html.erb has been chosen as the views to be modified.
2. The controllers student_task_controller.rb and participants_controller.rb are invoking the views as shown below. Thus, this list method in both the controllers need to be refactored to figure out what badges the team or an individual student needs ti be awarded.
3. All business logic regarding badge assignment criteria will be put in teammate_review_response_map.rb and review_response_map.rb created for “Good teammate” and “Good reviewer” badge respectively.
When only one Badge is assigned :
Assigning both the badges together :
Test Plan
We have developed the project using the TDD methodology. We have thoroughly tested all the functionalities we have implemented by writing automated testcases in features/specs/badge_system_spec.rb file in expertiza.
To start off, we have tested the following scenarios:
- The assignments#edit page has a tab named badges.
- In the badges tab, allow the instructor to change the threshold value of the badges, above which the badges will be awarded to the students.
- Assign the “Good Teammate” badge to a student when the student receives a very high average teammate review grade (higher than 95 by default).
- Assign the “Good Reviewer” badge to a student when the student receives a very high review grades assigned by teaching staff (higher than 95 by default).
- Instructor can view all badges assigned to all participants.
Command to run the testcase file : rspec badge_system_spec.rb
Other References
See the screencast at https://youtu.be/WtPns8mG2K8. Pull request is available from https://github.com/rikenshah/expertiza.