[[!template id=gitrepo repo=pygrader]] The last two courses I've TAd at Drexel have been scientific computing courses where the students are writing code to solve homework problems. When they're done, they email the homework to me, and I grade it and email them back their grade and comments. I've played around with developing a few grading frameworks over the years (a few years back, one of the big intro courses kept the grades in an Excel file on a [Samba][] share, and I wrote a script to automatically sync local comma-separated-variable data with that spreadsheet. Yuck :p), so I figured this was my change to polish up some old scripts into a sensible system to help me stay organized. This system is pygrader. During the polishing phase, I was searching around looking for prior art ;), and found that Alex Heitzmann had already created [pygrade][], which is the name I under which I had originally developed my own project. While they are both grade databases written in [[Python]], Alex's project focuses on providing a more integrated grading environment. Pygrader accepts assignment submissions from students through its `mailpipe` command, which you can run on your email inbox (or from [procmail][]). Students submit assignments with an email subject like [submit] `mailpipe` automatically drops the submissions into a `student/assignment/mail` mailbox, extracts any [MIME][] attachments into the `student/assignment/` directory (without clobbers, with proper timestamps), and leaves you to get to work. Pygrader also supports multiple graders through the `mailpipe` command. The other graders can request a student's submission(s) with an email subject like [get] , Then they can grade the submission and mail the grade back with an email subject like [grade] , The grade-altering messages are also stored in the `student/assignment/mail` mailbox, so you can peruse them later. Pygrader *doesn't* spawn editors or GUIs to help you browse through submissions or assigning grades. As far as I am concerned, this is a good thing. When you're done grading, pygrader can email (`email`) your grades and comments back to the students, signing or encrypting with [[pgp-mime]] if either party has configured a [[PGP]] key. It can also email a tab-delimited table of grades to the professors to keep them up to speed. If you're running `mailpipe` via procmail, responses to grade request are sent automatically. While you're grading, pygrader can search for ungraded assignments, or for grades that have not yet been sent to students (`todo`). It can also check for resubmissions, where new submissions come in response to earlier grades. The `README` is posted on the [PyPI page][pypi]. [Samba]: http://www.samba.org/ [pygrade]: http://code.google.com/p/pygrade/ [procmail]: http://www.procmail.org/ [MIME]: http://en.wikipedia.org/wiki/MIME [pypi]: http://pypi.python.org/pypi/pgp-mime/ [[!tag tags/code]] [[!tag tags/linux]] [[!tag tags/programming]] [[!tag tags/pypi]] [[!tag tags/python]]