See also
Questions or tasks are uploaded to the application as (zipped) folders of HTML files, JavaScript files, images, … . The index page of that folder is displayed by the application. In fact, every question consists of several folders;
These folders are stored on a file system that is separate and not in the main database of the application - possibly even on a different server.
The question pages themselves do not contain the code needed to submit the answers: question authors need not know about the technical details of the application. Questions are displayed in an iframe separate from the part of the page that contains the interface for submitting the answer:
The correct answer to a question is registered with the application when the question is uploaded. Note that the correct answer may depend on the language into which the question is translated. A question also has a title (again language dependent) which is used by the application when displaying a list of questions. The title is automatically printed on the web page, and should not be present on the question page that has been uploaded.
Questions are grouped into question sets. A question set contains all questions for a contest at a given level. Different levels have different question sets, but a single question set may contain different translations of the same questions.
A competition (or contest) is a group of question sets of different levels. The official contests can usually be taken on at least four levels, but other restricted contests may have fewer.
For each question in a given set we store the number of marks a pupil earns when they answer that question correctly and the number of marks they lose when giving the wrong answer. (Not answering a question yields zero points.) This information is also displayed when the question is shown to the contestant (but is not part of the question page written by the author). Finally, with each question set we also store a time limit.
The same question may belong to different question sets with different marks and difficulty indication. Typically, the same question will occur two or three times in the same competition, but at different levels. It is also allowed for the same question to occur in different competitions. Complete question sets are however never shared.
Every competition has a title (that is to say, one for each supported language). Typical titles are ‘Official Bebras contest 2023’, ‘Best of Bebras Belgium 2018–2022’, …
The fact that the question and feedback pages are not stored in the same folder is to reduce cheating: the URLs used for both entries are different, so the URL for the feedback page cannot be guessed that of the question page. The URLs both contain a randomly generated ‘magic number’ which is not directly related to the ID of the task - and again cannot simply be guessed.
<title>
-tag in the question page when it is first uploaded? In fact, also other information (like the
correct answer) could be extracted from tags in the header of the HTML page1. However, it should remain possible to change this information
in the database after the page has been uploaded, without altering that page.There is a security issue here. If the header of the question page contains information on what is the correct answer, then retrieving that page would allow cheating. That kind of information must therefore be removed before storing the question page on the server. ↩