Inline grader is a webapp built to help teachers and TA's grade assignments while referencing a rubric all in the same place.
I found that one of the obstacles of grading efficiency (from my own informal self-observations) is having to switch back and forth between lots of browser tabs and windows.
I found myself constantly switching between the grading rubric, the student's assignment that is being graded, Canvas, and the assignment spec . It felt a little bit overwhelming at times.
The inline grader tries to consolidate some of these screens. Now you can reference your rubric in the same place where you make grading marks. There is no longer a need to switch to Canvas multiple times during grading because now you only need to do it once when you are done grading that student. The inline grader gives you a report at the end that you can just copy and paste into Canvas once.
I built this web app so that I could grade my client side web dev student's assignments as a TA more easily. But I realized that this has potential to be useful for others.
Here are some ideas for other who might benefit from this:
It is currently coupled to the way Canvas is setup (because the grading report at the end assumes that you want the report flattened and organized under the root level sections, which aligns with Canvas so you can copy and paste). This could change upon further deliberation.
Visit https://luisnaranjo733.github.io/inline-grader/#/
OR
A grading rubric is defined as an XML document that is composed of rubric, section and criteria tags. If you can describe a grading rubric as a bulleted/ordered list, then that means that you can translate it to an XML format that the inline grader can understand.
Here is the general procedure for creating a grading rubric
This is the outermost tag of the document. It defines the entire rubric.
<rubric name="rubric name" />
This tag defines a semantic grading section. Grading sections can contain other grading sections, or they can contain grading criteria (or both!).
Each grading section must contain criteria (although not necessarily as a direct descendant). The sum of each section's criteria, is that section's possible points.
<section name="grading section name" />
This tag defines a grading criteria, the most basic fundamental building blocks to a grading rubric. Each grading criteria is a specific rule that can be applied to a student's assignment.
<criteria name="criteria name" weight="pointsPossible" />
<criteria name="criteria name" weight="pointsPossible">
Optional long description goes here
</criteria>
<rubric name="Sample assignment rubric">
<!-- Demonstrate unnested criteria (does not have to have a grading section) -->
<criteria name="uses modulus correctly" weight="10"/>
<criteria name="uses ternary operator correctly" weight="10"/>
<!-- Demonstrate simple rubric structure -->
<section name="grading section A">
<criteria name="missing aria landmarks" weight="3"/>
<!-- Example of a criteria with a long description -->
<criteria name="uses aria-polite" weight="2">
Make sure that they use the aria-polite correctly. This is critical!
</criteria>
</section>
<!-- Demonstrate 2 levels of nested sections (can go as deep as you want) -->
<section name="grading section B">
<section name="grading section B.1">
<criteria name="includes html5 doctype" weight="2"/>
<criteria name="loads normalize" weight="1" />
<criteria name="loads lodash" weight="2" />
</section>
</section>
</rubric>
You can think of a rubric as an n-nary tree. In this tree, the root node is the rubric tag. The leaves of the tree are the criteria. Everything in between the rubric and criteria tags are section tags. You can define the direction of the tree so that the leaves on the left are the "top" of the xml rubric, and the leaves on the right are the "bottom" of the xml rubric.
Feel free to branch off of master and add a feature, fix a bug, or make some subtle UI improvement!
There is a branch named "prototype" which is the first version of this web app. It works (and I've used it to grade a couple of assignments with success) but there are a few subtle bugs. I built it while I was learning React, and I quickly found that the architecture of the web app was not good.
I decided to rewind my master branch back to the basic create-react-app template and start from scratch. This gave me a chance to rebuild the app with better practices. I built it from scratch in the "v2" branch. Once the "v2" branch matured and became useable end to end, I merged it back into master.
I will put up issues on github to track features/bugs/improvements that are still pending. If you want to help, feel free to branch off of master and work on something. Submit a PR back into master when you are done. Thanks!
This web page is designed to be secure. All of it's state is managed locally with Redux. It never persists your grading rubric anywhere. Every time you want to use the page, you need to provide a url to your xml rubric.
You should provide a link to the 'raw' xml in a private github repository that you have access to. As long as you are logged in to github (authenticated and authorized) the inline grader should be able to make a web request to fetch your rubric.
This repository does not contain any sensitive grading rubric information.