This is fabulous. I rarely ever get follow-up questions, so I am
extremely happy that you have them.
Right now, I would just work on getting the auto-grader to work. Don't
focus on anything else, except getting one program to run another
another program and produce a report. We will figure out the other
components once we have a working auto-grader, because I am trying to
follow the Unix style of development. Once we have a working
auto-grader, we can start drawing up plans for the other components,
figuring out communication between machines, running multiple
instances, and reporting back to a user or another program.
To give you a better understanding of the auto-grader, it should have
these features:
* Run a process;
* Be able to kill a process (report out of time);
* Report errors ( Segmentation fault, out of memory, didn't produce
output, etc...);
* Report wrong answer (If the output was incorrect); and
* Report correct solution (Produced the correct output).
You might want to also do some preprocessing:
* Look for method calls to threading;
* Look for method calls to exec; and
* Check that it not trying to access memory outside of its own directory.
However, this would just be extra and probably another program. One
other item you might consider is just pre-configuring the machine to
have sandboxes, to keep the program from affecting other part of the
machine.
Hope this helps. Additionally, I have included some links in the
bottom to relevant sites. I have also cc'ed the Google Groups, so
others can contribute ideas.
http://en.wikipedia.org/wiki/ACM_International_Collegiate_Programming_Contest
http://uva.onlinejudge.org/
http://en.wikipedia.org/wiki/Chroot
All the best,
--Sam
On Fri, Apr 6, 2012 at 11:47 AM, <dfai...@nmt.edu> wrote:
> Sam,
> Ying and I are still confused about the auto-grader. Would it be possible
> to get a more complete problem statement? Some things we need to know are:
>
> - Who will run the program? Is the program completely autonomous, or will
> the grader manually run the program?
> - Will the program run on a server, or are the ports being used locally?
> If the program is being run on a server, why? It seems much more secure to
> just keep it local and allow students to submit by e-mail or Moodle.
> - Will the program actually generate a grade, or just list any errors that
> were encountered?
>
> Sorry to ask so much, but with a complete problem statement we will be
> able to work much more efficiently. Just prime us with some better
> information and we'll get this done as soon as we can.
>
> Thanks,
> Daniel