This page is out of date. For latest info click https://github.com/hit-moodle/onlinejudge/wiki
Introduction
This plugin is designed for courses involving programming. It can automatically grade programming assignments by testing the submissions by customizable test cases (ACM-ICPC/Online Judge style).
Features
This plugin inherent Moodle's standard assignment type, uploadsingle . So it gets all uploadsingle functions and has its own additional features:
- Support both Linux and Windows.
- Run C/C++ code locally in sophisticated libsandbox environment to prevent attacks (e.g. rebooting system, accessing files/network, consuming/occupying system resources). (Linux only)
- Run C/C++, Java, C#, Python, php, schema and other 40+ languages remotely in http://ideone.com. It is safe and free. See http://ideone.com/faq for full list of supported languages.
- Different results (e.g. Accept, Wrong Answer, Presentation Error, Compilation Error, Time/Memory/Output Limit Exceed) get different grade.
- Support multiply test cases.
- Grade test cases separately. E.g., there are four cases and max grade of each is 25. The student pass three of them can get 25+25+25 = 75.
- Customized feedback/hint can be shown to who doesn't pass the test.
- Compile only mode.
- Teachers can trigger rejudge of all submissions and grade manually anytime.
- Support resubmit many times and one time submit.
- More details (program output and etc.) can be shown to teachers.
- Highlight code preview (powered by SyntaxHighlighter).
- Easy installation, no root required.
- Translation: English and Simplified Chinese
How to get/use
See OnlineJudgeInstallation
Credits
This project is sponsored by School of Computer Science and Techonolgy, and School of Software in HIT.
This plugin learned and copied much from arkaitz.garro(AT gmail.com)'s program (or called epaile) assignment type which has stopped developing since 2007.
Other contributors:
- 施兴 (paradisehit AT gmail.com) designed and implemented the prototype.
- 刘禹 (pineapple.liu AT gmail.com)gave much help and advices.
- 刘琦卿 (lqq0205 AT foxmail.com) contributed many codes.
TODO
- Backup and restore. (Waiting for Moodle 2.0)
- Better test case management UI
Screenshot
Hello, First of all congrats for this module, great job! I have one question, is it capable of checking submitted assignments for code plagiarism in a moss-like functionality mode? Thanks in advance and forgive if this info is already mentioned and i haven't seen it.
Have you see this? http://code.google.com/p/sunner-projects/wiki/AntiPlagiarismBlock
Hi,
Great module. Is this possible:
When a student submits a solution, he should immediately see his grade, and if there ise a problem, he should resubmit.
In otherwords st. like "Immediate Auto Judge".
Thx.
@oguzaltu
Hi, what you need is just what it does. Enjoy it!, :-)
Another question: Does this work on moodle 2.0? thx...
@oguzaltu oj 1.9.x doesn't support moodle 2. OJ 2.0 will.
Hi. I started using this plugin. Two questions from the students: 1- What is the exact command used to compile the source? 2- What functions are restricted?
@oguzaltu 1. u can get it from languages/c.sh and cpp.sh 2. The system calls which could do bad things on system, such as fork()
Great plugin! Last semester it took us many hours to grade all assignments, so we installed your plugin and we hope it will save us more time next semester.
One question: is it possible to allow students to submit several files at once? It is important for us because we teach C++, and we want to educate the students to seperate H files and CPP files, so for each assignment they have to submit at least 3 files - unit.h, unit.cpp, main.cpp.
Is it possible that the plugin will accept these files, compile and link them together?
Since it is not easy to add multi-files support to 1.9 which is inherited from upload single assignment type, we will support multi-files in OJ 2.0.
Thanks a lot.
In this case, is it possible to allow submit using a textarea instead of a file-upload control? This will enable students to just copy and paste each file into the text area.
Yes, it is possible. But the work load is nearly as the same as supporting multi-files. Both need to change the parent class and do more hacking.
OJ 2.0 will separate judge kernel and UI so that it will be easier to design different UI.
Thank you for your reply. We are eagerly waiting for version 2.0!