Ron - I greatly appreciate you and others taking the trouble to set out, and at such length, ideas for solutions. That has given me things to think about, in the medium term. Granted, I should probably have persevered with Linux, but I am where I am, and since I have a push-button solution that doesn't need this step, that is what I will use, for the present.
The automated m-file marking systems I have written, over many years, have been entirely in MATLAB. They have error-trapping, so students' files crashing do not take the whole system down, which can take hours to mark and grade 4500-5000 mfiles; also, file handling, as well as dealing with common naming problems. I have programmed them in such a way to award marks to reward, in an intelligent way, certain types of incorrect answer. The downside is that the whole thing is not particularly well engineered, from a software point of view - that I admit. It is really, I suppose, that I am losing the energy to keep adding extra, unnecessary functionality, albeit requiring relatively simple coding, just so I can tow a line and use CANVAS, which I think it is apparent is not really capable of doing what I need to do. (All this is on top of what I am really supposed to be doing, which is teaching flight mechanics etc).
To reiterate: the reason I have been trying to do these things could be summed up as to provide formal assessment tests that are robust against plagiarism. My approach has been to provide each student with their own (for example) helicopter data, carefully parameterized in terms of randomized masses, numbers of rotor blades, disk loadings, and about seven other key variables that come from helicopter design codes. I was unable to find any way that CANVAS would allow me even to communicate the individualized parameter sets (question data) individually to each student, of which there could potentially be several hundred. The result: I have a choice between getting MATLAB to email each student, or I end up publishing a spread-sheet on CANVAS that can be seen by all, which I do not want to do.
My systems have almost invariably relied on a rigid file-naming convention:
e.g. modulecode_year_studentID_assignmentNo.m
aee123_201415_12349876_a1.m
(In the past, I have awarded 5% marks simply for submitting a correctly named file; another 5% for a file that ran without crashing!)
All the best, Dan.