File upload/submission question type

Re: File upload/submission question type

by Richard Lobb -
Number of replies: 7

This is very timely, Trent, as I'm just switching back into CodeRunner development mode, now that our teaching term has (almost) finished. I've got a list of things I want to do; file upload is on the list, near the top, so it should happen.

I think I'll just treat files uploaded by the students the same as support files included by the author. They just get copied into the working directory. Also, they're read only so they can't get changed when testing, which could introduce unwanted side-effects between tests.

I'll post back when it's done.

Richard


In reply to Richard Lobb

Re: File upload/submission question type

by dirk grunwald -

You may also want to look at http://www.inginious.org -- this is a autograding system that can interface with Moodle using LTI. It doesn't fit into a 'quiz context' but provides more capabilities on the backend grading (...because you have to cons it up yourself using a shell script..). It uses docker containers during evaluation so is slower / less responsive.

There are other similar options we've explored - we use coderunner extensively in our labs, but are looking for "assignment grading" solutions that need to integrate with version control but don't need to be as responsive.

For browser based development, there's the Moodle "VPL" ( http://vpl.dis.ulpgc.es/ ). We've also been using Cloud9 (c9.io) but that's now merging into Amazon and harder to use. Other web IDE's like codenvy are an option, but we haven't explored them yet.

We've considered inginious.org, autolabproject.org and okpy.org as replacements for an in-house solution. Our current thinking is to go with inginious in the short term and then adopt a solution using a university hosted gitlab and standard CI tools like jenkins. To handle the "file-up load", we were going to create an LTI application that uses a token to manipulate the gitlab instance and e.g. check in a student's solution for them. This would mean a simple interface for students who have yet to master git, but full git functionality for later classes.

In reply to dirk grunwald

Re: File upload/submission question type

by Trent Lewis -

Thanks for the hints and pointers.

I have just the other day successfully created a question type in CodeRunner that takes as an ‘answer’ an SVN revision number and then the jobeserver checkouts from a locally hosted subversion server, compiles and runs (using ant) and then compares against the tests given in the CodeRunner question setup.  The student just uses a standard IDE to develop the code and commits to the repository.  Allowing the student to specify the revision number as the ‘answer’ gives them control over what they submit and allows multiple submissions.  They could even, in theory, complete all the work, committing each stage/checkpoint  to the revision control system and then go to Moodle/CodeRunner and submit each of the revision numbers that satisfy the different questions.

It still needs some fine tuning but happy to share once I have made it a bit more generic and sort out some quirks.  One of the trickiest parts was getting the University IT to allow holes in the various firewalls!

I’m sure Richard will give me a slap over the wrist for this as I’m sure that is not the intention of CodeRunner :)

Trent

In reply to Trent Lewis

Re: File upload/submission question type

by Richard Lobb -

Certainly no slap over the wrist from me - it sounds great, Trent! Please share. 

I did something vaguely similar a few years ago when teaching a web programming course - the student's "answer" was an URL of a website they'd implemented, and the template code then explored and graded their site. And like you, I had to punch holes in the firewalls to make it happen.

I'm only a control freak with regard to CodeRunner itself - the more uses you can find for it the better, as far as I'm concerned :)

Richard

In reply to Richard Lobb

Re: File upload/submission question type

by Trent Lewis -

I’ll keep you up to date and share it when it’s done. 


Trent

In reply to Trent Lewis

Re: File upload/submission question type

by Trent Lewis -

So...I just finished a semester using a CodeRunner+SVNRepo question type...and...it went really well!

It allow students to commit their complete project and any support files from their IDE (NetBeans and Java in this case) which also gave their revision number and then head over to Moodle/CodeRunner question and submit the revision number.  The question then checks out the code (based on the revision where the root of repo was based on the students Moodle username so no cross contamination or code stealing) and used Ant to build and run the code which was then subjected to the standard CodeRunner test cases.  We had to set up a dummy SVN user that had ip restricted access to the repository rather than hard coding a text password (students managed to find that quickly!)

Students seemed to easily get the hang of it and it allowed me to automatically provided feedback on more complex programming problems (something bigger than a cut and paste allows).  It also gave students more practice at using version control which is always good.  For major assignments I could also easily checkout the final code revision and review it for myself (and use coderunner as a self-review tool for the students).

I'll sanitize the question type a bit more once my teaching settles and maybe even make some notes on it if anyone is interested.

Trent

In reply to Trent Lewis

Re: File upload/submission question type

by Richard Lobb -

Great posting - thanks Trent. I forwarded it to all our Software Engineering staff to show them how things should be done :)  I'd certainly be interested in hearing more when/if you have time.

Richard

In reply to Richard Lobb

Re: File upload/submission question type

by Jim Newton -
Was feature implemented?

Having students copy/paste large amounts of code into the text box which gets magically spliced into template code is very brittle.  If the user's code is not parsable, then the error messages are completely useless.  For example if the user code is missing a parenthesis or quotation mark, the output does not indicate such.
If the user's code was available as a file, then it would be easy to tell whether that file is parsable.