pygrader

Manage a course's grade database with email-based communication
Download

pygrader Ranking & Summary

Advertisement

  • Rating:
  • License:
  • FDL
  • Price:
  • FREE
  • Publisher Name:
  • W. Trevor King
  • Publisher web site:
  • http://www.physics.drexel.edu/~wking/

pygrader Tags


pygrader Description

pygrader is a Python directory-based grade database for grading course assignments. Besides tracking grades locally, you can also use it to automatically mail grades to students and professors associated with the course. For secure communication, PGP can be used to sign and/or encrypt any of these emails.InstallationPackagesGentooI've packaged pygrader for Gentoo. You need layman and my wtk overlay. Install with:# emerge -av app-portage/layman# layman --add wtk# emerge -av dev-python/pygraderIf you are developing pygrader, you can use update-copyright to keep the copyright blurbs up to date.Installing by handpygrader is available as a Git repository: git clone git://tremily.us/pygrader.gitSee the homepage for details. To install the checkout, run the standard: python setup.py installUsagePygrader will help keep you organized in a course where the students submit homework via email, or the homework submissions are otherwise digital (i.e. scanned in after submission). There is currently no support for multiple graders, although I will likely add this in the future. In the following sections, I'll walk you through administering the homework for the test course.All of the processing involves using the pg.py command. Run: pg.py --helpfor details.Sending emailPygrader receives submissions and assigns grades via email. In order to send email, it needs to connect to an SMTP server. See the pgp-mime documentation for details on configuring you SMTP connection. You can test your SMTP configuration by sending yourself a test message: pg.py -VVV smtp -a rincewind@uu.edu -t rincewind@uu.eduDefining the courseOnce you've got email submission working, you need to configure the course you'll be grading. Each course lives in its own directory, and the basic setup looks like the test example distributed with pygrader. The file that you need to get started is the config file in the course directory: cat test/course.confassignments: Attendance 1, Attendance 2, Attendance 3, Attendance 4, Attendance 5, Attendance 6, Attendance 7, Attendance 8, Attendance 9, Assignment 1, Assignment 2, Exam 1, Exam 2professors: Gandalfassistants: Sauronstudents: Bilbo Baggins, Frodo Baggins, Aragornpoints: 1weight: 0.1/9due: 2011-10-03points: 1weight: 0.1/9due: 2011-10-04…points: 10weight: 0.4/2due: 2011-10-17nickname: G-Manemails: g@grey.edupgp-key: 4332B6E3emails: eye@tower.edunickname: Billemails: bb@shire.org, bb@greyhavens.net…The format is a bit wordy, but it is also explicit and easily extensible. The time it takes to construct this configuration file should be a small portion of the time you will spend grading submissions.If a person has the pgp-key option set, that key will be used to encrypt messages to that person and sign messages from that person with PGP. It will also be used to authenticate ownership of incoming emails. You'll need to have GnuPG on your local host for this to work, and the user running pygrader should have the associated keys in their keychain.Processing submissionsAs the due date approaches, student submissions will start arriving in your inbox. Use pg.py's mailpipe command to sort them into directories. This will also extract any files that were attached to the emails and place them in that persons assignment directory: pg.py -d test mailpipe -m maildir -i ~/.maildir -o ./mail-oldUse pg.py's todo command to check for ungraded submissions: pg.py -d test todo mail gradeTo see how everyone's doing, you can print a table of grades with pg.py's tabulate command: pg.py -d test tabulate -sWhen you want to notify students of their grades, you can send them all out with pg.py's email command: pg.py -d test email assignment 'Exam 1'TestingRun the internal unit tests using nose: nosetests --with-doctest --doctest-tests pygraderIf a Python-3-version of nosetests is not the default on your system, you may need to try something like: nosetests-3.2 --with-doctest --doctest-tests pygraderProduct's homepage


pygrader Related Software