mkogg.py: Fix 'self.get_mp4_metadata(self, source)'
[blog.git] / posts / pygrader.mdwn
1 [[!template id=gitrepo repo=pygrader]]
2
3 The last two courses I've TAd at Drexel have been scientific computing
4 courses where the students are writing code to solve homework
5 problems.  When they're done, they email the homework to me, and I
6 grade it and email them back their grade and comments.  I've played
7 around with developing a few grading frameworks over the years (a few
8 years back, one of the big intro courses kept the grades in an Excel
9 file on a [Samba][] share, and I wrote a script to automatically sync
10 local comma-separated-variable data with that spreadsheet.  Yuck :p),
11 so I figured this was my change to polish up some old scripts into a
12 sensible system to help me stay organized.  This system is pygrader.
13
14 During the polishing phase, I was searching around looking for prior
15 art ;), and found that Alex Heitzmann had already created [pygrade][],
16 which is the name I under which I had originally developed my own
17 project.  While they are both grade databases written in [[Python]],
18 Alex's project focuses on providing a more integrated grading
19 environment.
20
21 Pygrader accepts assignment submissions from students through its
22 `mailpipe` command, which you can run on your email inbox (or from
23 [procmail][]).  Students submit assignments with an email subject like
24
25     [submit] <assignment name>
26
27 `mailpipe` automatically drops the submissions into a
28 `student/assignment/mail` mailbox, extracts any [MIME][] attachments
29 into the `student/assignment/` directory (without clobbers, with
30 proper timestamps), and leaves you to get to work.
31
32 Pygrader also supports multiple graders through the `mailpipe`
33 command.  The other graders can request a student's submission(s) with
34 an email subject like
35
36     [get] <student name>, <assignment name>
37
38 Then they can grade the submission and mail the grade back with an
39 email subject like
40
41     [grade] <student name>, <assignment name>
42
43 The grade-altering messages are also stored in the
44 `student/assignment/mail` mailbox, so you can peruse them later.
45
46 Pygrader *doesn't* spawn editors or GUIs to help you browse through
47 submissions or assigning grades.  As far as I am concerned, this is a
48 good thing.
49
50 When you're done grading, pygrader can email (`email`) your grades and
51 comments back to the students, signing or encrypting with [[pgp-mime]]
52 if either party has configured a [[PGP]] key.  It can also email a
53 tab-delimited table of grades to the professors to keep them up to
54 speed.  If you're running `mailpipe` via procmail, responses to grade
55 request are sent automatically.
56
57 While you're grading, pygrader can search for ungraded assignments, or
58 for grades that have not yet been sent to students (`todo`).  It can
59 also check for resubmissions, where new submissions come in response
60 to earlier grades.
61
62 The `README` is posted on the [PyPI page][pypi].
63
64 [Samba]: http://www.samba.org/
65 [pygrade]: http://code.google.com/p/pygrade/
66 [procmail]: http://www.procmail.org/
67 [MIME]: http://en.wikipedia.org/wiki/MIME
68 [pypi]: http://pypi.python.org/pypi/pgp-mime/
69
70 [[!tag tags/code]]
71 [[!tag tags/linux]]
72 [[!tag tags/programming]]
73 [[!tag tags/pypi]]
74 [[!tag tags/python]]