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):
- Their paper doesn't meet the word limit.
- There are grammatical mistakes
- Punctuation issues
- 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:
- Downloads student papers from CANVAS
- Checks student papers to see if they meet various conditions, e.g., wordcount (using Python) and returns feedback.
- Check student grammar using LanguageTools and return feedback
- Check student writing using OpenAI and return feedback
- Return student papers w/ above feedback for manual (philosophical) feedback.
- Posts grade to CANVAS.
- 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:
Next, the script will check for any writing mistakes and I will provide manual feedback under "Philosophical Feedback":
Finally, the HTML file containing the student feedback will also contain a copy of their paper.
Future Development
- 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.
- There are a lot of bugs in the application itself. Most of these relate to encoding issues.
- The current application is CLI so I need to develop a GUI for wider use.