Skip to content

Papergrader

When grading student papers, I want to use my energy to engage with a student's philosophical ideas. I don't particularly want to point out the following (to name a few examples):

  1. Their paper doesn't meet the word limit.
  2. There are grammatical mistakes
  3. Punctuation issues
  4. The paper requires a block quote (a passage to analyze) but no such passage is provided.

It is important that students receive feedback on their writing but it isn't clear to me that I am the best person to give that feedback.

To help students improve their writing, I wrote several lessons that teach specific writing skills: How to Write Philosophy. In addition, I make use of CANVAS quizzes that test a student's understanding of this material. However, there still remains the challenge of giving student's writing feedback.

Solution

To address the above issue, I developed a Python application that uses LanguageTool, the OpenAI API, and CANVASAPI to do the following:

  1. Downloads student papers from CANVAS
  2. Checks student papers to see if they meet various conditions, e.g., wordcount (using Python) and returns feedback.
  3. Check student grammar using LanguageTools and return feedback
  4. Check student writing using OpenAI and return feedback
  5. Return student papers w/ above feedback for manual (philosophical) feedback.
  6. Posts grade to CANVAS.
  7. Returns an HTML file with all of the above feedback and the student's paper.

A few illustrations. Suppose a student submits a paper that should be 700 words, has a title and their name, and the paper must include one block quotation. The application will produce the following feedback:

image of automated checks

Next, the script will check for any writing mistakes and I will provide manual feedback under "Philosophical Feedback":

image of feedback on student paper

Finally, the HTML file containing the student feedback will also contain a copy of their paper.

image of a sample student paper

Future Development

  1. The current program is limited to markdown files that contain YAML header for details like title, date, name, etc. To address this issue, I created several tutorials on how to write in markdown.
  2. There are a lot of bugs in the application itself. Most of these relate to encoding issues.
  3. The current application is CLI so I need to develop a GUI for wider use.