Instructor guides

Creating your problems

  jutge-toolkit

In order to create your problems, please use the brand new jutge-toolkit.

This toolkit contains the tools and the documentation you need in order to prepare problems and quizes for Jutge.org. It also contains some sample problems to help you get started.

Managing your problems

Adding New Problems

There are different alternatives to upload a new problem you have created:

  • Web interface: Go to theAdd problems page. You can either upload a compressed archive containing the Problem directory or provide a link for the jutge to download the files from. The file that the jutge recieves should not have any subfolders inside other from the different languages for the problem (if it's the case). For a link to be valid the judge must be able to download the content right away. (You can test this doing a wget of your link). The content must be a compressed archive like the one described above. Some platforms that make it easy to upload problems are github and dropbox. Below are a few examples where you can see how the problem is stored in the repositories and how their link is obtained. Please note that if you don't follow these examples the behaviour of the jutge is undetermined.
  • Uploadable archive: Here you can download a sample problem archive that you can later upload to the jutge.
  • Dropbox: There are two basic examples, where different languages have the same solution and where different languages have different solutions. You can see how they have been stored in the repositories using the following links:
    Same solution
    Different solutions
    For dropbox, in order to generate a direct download link, you have to click the button \"Share Folder\" and change the 'dl' parameter value at the end of the obtained link from 0 to 1.
  • Github: The way to store the problems on github repositories is exactly the same as in Dropbox. The way to obtain the link for Github repositories is to append '/archive/master.zip' at the end of the repository name. For example, if the repository is https://github.com/ralucado/ProblemTest, then the download link would be: https://github.com/ralucado/ProblemTest/archive/master.zip
  • Scp links: For this type of service to work the specified server must be able to accept a ssh connection from the jutge. You have to provide a link for the problem folder in the following way: username@hostname:path/to/folder.
  • Others: You can provide a link for any webside as long as it is a direct download link (the kind of links that open a 'save file' dialog in your browser). You know the link will work if you can download a compressed archive from it via wget, and this contains just the problem files, or language folders if it is the case, no more layers of subfolders.

Note that when adding or updating problems, all the languages are given at once at the same time, they no longer have different sources. Therefore you will no longer have the option to add a translation after creating the problem, all the languages must be inside the archive.

Updating existing Problems

Go to the Problems page in order to update a problem by clicking it in the problem list, and then using the Update dialogs on the problem page. Update files and links work exactly the same as the add ones (see section above). Note that when you update a given program, all the previous problem files are deleted and substituted with the new provided files. We reccomend to first download the current state of a problem before updating it. You can do that using the 'Download' button in the Information panel. For more information about uploadable files and links please read the previous section.

Deprecating Problems

Go to the Problems page and select the problem you want to deprecate from the list, amd use the bottom dialogue to Deprecate it. A deprecated problem does not accept submissions anymore, but continues to store all the previous submissions from students. Because submissions can never be erased, a problem can't be erased either. This action can be undone anytime using the same dialog.