kwurst / grading-scripts Goto Github PK
View Code? Open in Web Editor NEWScripts for preparing student programs for grading. Scripts convert student repository code to a PDF file for grading.
License: GNU General Public License v3.0
Scripts for preparing student programs for grading. Scripts convert student repository code to a PDF file for grading.
License: GNU General Public License v3.0
bash fetchConvertLab1.sh alice-bob tim-fred
Since not all assignments to be converted are labs, labconvert.py is not a good name.
Proposed new names:
assignmentconvert.py
processassignment.py
processdirectory.py - my favorite so far
Other suggestions?
With a2pdf and pdftk, preferably with directions on where and how to install.
The diagram that Stoney made needs to be updated to show how the workflow works. In particular, it needs to have the arcs labeled. Some of them need to be made bidirectional, or a second arc needs to be added.
The current verbose feature outputs very detailed messages. Allow multiple verbosity levels.
At a minimum, confirm that the right number of parameters has been passed. If not, print a usage message and exit.
The code consists of two parts
The first part is the same in every script. We should pull it out into its own file, and have it call the second, assignment-specific conversion code.
Need error handling in the fetchConvert*.sh scripts to rollback changes if it fails to create branches, etc.
It would be nice to generalize the fetchConvertLab*.bash so that there is one script.
$ bash fetchConvertLab.sh config/lab1 alice-bob
Where config/lab1 is a directory that contains 2 files: config.sh and files.txt. config.sh defines variables used by fetchConvertLab.sh. files.txt lists the files you want fetched from the students' repos.
The advantage is to have one script fetchConvertLab.sh. For each new assignment, you would create a folder with config.sh and files.txt. Update those files. Run script.
When you run libconvert.py, and try to stop it using ^C, it keeps running. It should stop. This is really bad when processing many submissions.
I think the problem is that each time you press ^C you are killing the current shell process, which returns control to python, and then python goes on to the next command.
Command or Assignment needs to check the exit value of the shell processes to see if an error has occurred. If an error has occurred it should probably raise an exception.
There should be an option to process a single directory, rather than all subdirectories of the main directory.
The most common case will be to process all subdirectories, but sometimes a student's repository will be pulled late or have to be reprocessed after an error, and so will need to be processed individually, without reprocessing all the other directories.
If the conversion fails on a particular directory (due to a missing file, for example) labConvert.py needs to print an error message and continue running on the following directories.
Stoney suggested that the name for the student repository should include the course name/number/etc so that students don't end up with name conflicts between labs/projects in different courses.
For example, students can't create a Lab1 repository for CS 140, and another Lab1 repository for CS 254.
A better solution would be to name the repository CS-140-Lab1.
What if the student took the course multiple times (not unheard of)? CS-140-BL-S1-2013-Lab1? That's what I've been doing!
Change code from bash to Python. Mostly done, but not yet committed or pushed.
Need error handling in the labReturn.sh script to rollback changes if it fails.
The conversion code is basically:
We should be able to list the files (and paths) in a JSON structure, and the let the code do the first part in a loop, build up the concatenation command in the second part, do the third part in a loop.
(I think this is what Stoney wanted to do last year...)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.