Skip to content
/ sjudge Public

A client-side programming judge made for use as a teaching tool.

License

Notifications You must be signed in to change notification settings

xtevenx/sjudge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sjudge

Build Status Coverage Status Language grade: Python Dependencies License

sjudge is a client-side programming judge made for use as a teaching tool. It is programmed in pure Python and designed to be as simple and robust as possible.

The differences between sjudge and the many available online judges is that sjudge is designed for small classroom use and the simplicity for a teacher to make their modifications if they so desire.

When (and why) I should use sjudge

sjudge is a "programming judge", which means that it is a tool used to test programs to see if they work as expected. However, contrary to most other judges, sjudge is locally run which results in a simpler design. Along with it also comes with a set of advantages and disadvantages:

Advantages Disadvantages
Simple design for easy configurability. A program's performance will vary depending on the computer.
No fear of students trying to undermine your machine. The test cases are viewable by the students.

sjudge as a backend

Another method of utilizing sjudge is to use it to mark tests. For example, one could pose a set of problems to the students, save their solutions, then run sjudge with a script to determine the results of the test. One downside of this method is that students' solutions would need to be run on your machine, however, that can be easily overcome by creating a new user with no special permissions with which to run the marking script.

Supported Platforms

Operating Systems Python Versions
Ubuntu 18.04 LTS (Bionic Beaver) Python 3.7.x
Ubuntu 20.04 LTS (Focal Fossa) Python 3.8.x
Windows 10

Setup

Installation

sjudge depends on the Python packages and versions listed in requirements.txt; use the following command to install them:

pip3 install -r requirements.txt

Configuration

sjudge needs a public readable directory to store all the exercises. Edit DEFAULT_EXERCISES in src/main.py to point to the full path of that directory.

To have the students run sjudge, place it in a directory to which they have read access (usually /usr/local/sbin/ on linux) and instruct them to add it to their PATH (if needed). If hiding the location of the exercises is desired, you can compile sjudge into an executable with pyinstaller.

Adding exercises

sjudge comes with a very minimal set of exercises. To add more, look at the template files located in exercises/ for guidance:

  • exercises/_template.txt is the template of an exercise description.
  • exercises/_template.py is the template of a test case generation script.

After the .txt (exercise description) and .py (test case generation) scripts have been created (both bearing the same name: the name of the new exercise), run the .py file to generate the test cases. The new exercise name should now be listed when you run python3 main.py --list_exercises.

License

sjudge is licensed under the GNU General Public License v3.0.