For large classes with many assignments, entering grades can be time-consuming and error-prone. I started prototyping a very simple app that would allow a grader to quickly select the student and assignment in a text box interface and then write the grade to a spreadsheet. One time savings comes from matching the minimum set of characters that uniquely matches the student name or assignment from a list of options, akin to tab-completion. This assumes that the grade sheet has the very simple structure of names along the first column of the spreadsheet and assignments on the first row of the spreadsheet.

I first did this with a CSV file and a pandas data frame and then used xlwings to allow an excel spreadsheet as the data file. The real win came once I was able to use a google spreadsheet as the data store with the help of the gspread library for python access to google docs. After a few hours of fumbling about with the help of a student we got the OAuth2 authentication working. Since the best solution for sharing a grade file among my teaching assistants has been Google Docs, going through the OAuth2 investment was worthwhile.

This is also enabled by the Jupyter widgets which allow a lightweight prototyping environemnt for a simple graphical user interface. Since not all teaching assistants will have a local python environment with Jupyter installed, I'll experiment with placing it in a SageMathCloud project and share access with the TAs.

The full code can be found here.

Here is the interface showing completion lists before a full match.

alt text