DDgrader consists of a few tools to parse design documents, with the goal of speeding up their grading,
and allowing for quick collection of relevant information. It is broken up into several commands like git
so use ddgrader mine, ddgrader setup etc.
ddgrader mine
The mine command is responsible for parsing all of the design documents and extracting student and group
information. It expects one parameter which is a directory containing the unpacked design documents from Canvas.
###Errors
There are several test cases for the parsing/regexes but unfortunately some students just don't follow the
format and there is nothing that can be done! Using different logging levels ddgrader -L debug mine unpacked
allows the user to discover and hopefully rectify these issues. I've tried to categorize them,
- CRITICAL: the design document is empty or very wrong and may need to be rewritten,
- ERROR: the design document is likely wrong, or lacking some significant information
- WARNING: Student omitted some non-critical information (ranking, slip days)
These should be repaired before running the setup command
The report command is responsible for reporting interesting things about a collection of design documents.
It is composed of (several) subcommands, listed below.
###report ranking
report ranking will generate a report showing students who have been ranked poorly by their
group members. This requires the mine command to have been previously successfully executed
see report ranking --help for additional parameters. It is possible to set a different threshold for
reporting (--thresh) as well as include all member rankings for poorly ranked students (--all)
###report slip
report slip will generate a report showing students who have reported non-zero slip days on their design document.
It defaults to 0 if they the slip day line.
--all will optionally show all slip day reports, including 0
The setup command is responsible for taking the information from mine and the students' implementations
and linking them together. It creates a directory for each student (by their eid) and symlinks the groups' code,
symlinks their design documents, copies the grading template (configuration), and also symlinks other files from
their partners who come alphabetically before them (currently)
The grade command will automate the grading process by automatically opening all the relevant files for each student
in a loop. These can be configured with the configuration (it optionally takes a eid of a specific student to grade)
The collect command zips up the feedback forms and collects the grades into a form uploadable to canvas. It
requires the grading spreadsheet from canvas, and also the index of the column for the grade.
ddgrader uses a config file for a lot of parameters. By default it assumes "ddgrader.cfg" in the current working directory,
but can optionally specified with --config parameter. Copying the one from the repo is a good place to start.
- Install python3 and python3-setuptools (standard on UT linux machines)
- Clone ddgrader via
git clone git@github.com:olemma/ddgrader.git - change into ddgrader directory
cd ddgraderand install viapython3 setup.py develop --user. This will install ddgrader to~/.local/bin/ddgraderand~/.local/bin/project_prepare(which you will want to add to your PATH prehaps) - Run it via
ddgrader --helpto see how it works. - Make a directory for the project somewhere i.e.
projx - Download the code submissions from canvas assignments, put the zip in the directory created
projx/code_submissions.zip - Download the design doc submissions from canvas assignments, extract the zip into some directory
projx/raw_docs - Copy
ddgrader.cfgfrom the ddgrader folder toprojx(this is not necessary but will let you configure it later) - Run
ddgrader mine raw_docs. This will parse the student design documents into a database-like file (.dds.pkl). Unfortunately, many students don't follow the design document formatting as specified, so a list of errors/warnings will be shown. Seemineinformation above. Typically ERRORs and CRITICAL require editing the offending design documents. Filling out missing partner ids, etc. The parser is very lax, it requires really just a 'Name:' and 'EID:' for each member. It ignores 'Name1', etc. This might take 30min or so. - Repeat previous step until no serious errors occur.
- At this point you can optionally use
ddgrader report slipandddgrader report rankingto get reports on slip days and poorly ranked students. - Run
project_prepare code_submissions.zip implementations. This will unpack the zipfile into animplementationsdirectory, and rename the folders according toeid1_eid2_eid3for each group. There may be some errors if the students didn't write their EIDs when they submitted their code, which you can fix by manually renaming the folder. - Create a feedback template (see
ddgrader.cfg), perhaps calledtemplate.txtthat has the skeleton of the comment files you will write. - Run
ddgrader setup implementations. This should create astudents/eidxxdirectory for each student by eid. Inside the folder will be a copy of the template, a copy of their design doc, symlinks to their group's code and symlinks to their partners' feedbacks. There may be some warnings if matching code directory couldn't be found. Usually this is because of invalid EIDs either in their code readme or their design document, and can be fixed by updating those. - Grade the design documents, putting your comments/grades in each student's
feedback.txt. Optionally useddgrader gradewhich loops over all students, opening an editor with the given files. Configure viaddgrader.cfg - Once grading is complete, Download the grade spreadsheet as a CSV from canvas (ask Allison)
- Open the grade.csv in some sort of editor and find the index of the cell corresponding to the design document grade. Set that as
grade_columninddgrader.cfg. (This is a hack). - Adjust the regex to
ddgrader.cfgto extract the grade from feedback (it will search for this) - Run
ddgrader collect grades.csvto generate a new csv with the grades and a zipped feedback file. - Upload both outputs back to canvas to update the grades and comments.