This document lists all the public repositories of the france-ioi organization.
All of our tools are under MIT License, even when the License is not specified in the repository.
All of our tasks published in these repositories are under CC-BY-SA license.
This repository also hosts some documentation common to projects on GitHub pages.
These are just basic presentation websites for contests organized by France-ioi
- alkindi-site corresponds to http://concours-alkindi.fr
- Castor-informatique.fr corresponds to http://castor-informatique.fr
- login-module This module takes care of the authentication of users into our different platforms. Different authentication methods are supported: plain login/password, google, facebook, authentication through LTI, SAML (in progress), and some custom authentication from other platforms such as PMS.
- lti-to-bebras This module is used here as a way to authenticate to the login-module through the LTI standard. It is also used to directly integrate tasks into platforms that support LTI (see below).
- AlgoreaPlatform This is the main repository for our new exercise platform. The goal is for this platform to eventually replace our other platforms, once all the required features are in place. A beta version can be tested on http://parcours.algorea.org It uses:
- commonFramework at its heart for client/server synchronization
- login-module for authentication
- pem-platform to integrate tasks through the task API
- bebras-platform This platform is specialized in organizing large scale contests that make use of client-side only interactive tasks. It uses tasks that implement the task integration API as well as the installation API. It uses:
- commonFramework for client/server synchronization
- ...
Production versions of the contest side of this platform are available here (among other places):
This platform is used to run the rounds 2 and up of the Alkindi cryptography contest. Students that are qualified can log in, create or join teams, access to the current round of tasks and collaborate to solve them.
Tasks for the Alkindi platform are developed separately, but do not use the task API yet. They can mostly be tested independently of the platform, but are not yet ready to be integrated in other platforms.
The codecast project is a C language interpreter and debugger that runs in the browser, except for the parsing stage which is done on the server using clang. The tool is designed as an educational tool. Teachers can record a session where they speak while using the tool to demonstrate the execution of C code to teach a new concept. The recording can then be played by students that can interrupt it at any time to take over and play with the debugger. It can be tested on codecast.france-ioi.org, try the examples in the top-right corner.
- codecast: recording/replaying events and voice
- persistent-c: C interpreter in the browser
- c-to-json: uses clang to parse C and send a json AST to the client
- bebras-monitor This tool is used to monitor connexions to a platform, show statistics about the different ips that connect to it, and give the possibility to whitelist or blacklist some ips. This helps to protect against some types of DDOS attacks.
- bebras-guard
This API’s purpose is to make it easy to integrate a given task in different platforms, and for platforms to use tasks from all types of sources. The API is documented here
-
pem-task Scripts that are part of the task-side of the task integration API.
-
pem-platform Scripts that are part of the platform-side of the task integration API
-
pem-task-validator A tool to validate that tasks and platforms conform to the Task integration API. It also provides a way to check that grading works as expected.
-
fioi-task-importer A tool to import tasks from svn (documentation here):
- For server evaluated tasks, import their content into a mysql database of tasks, to be used by TaskPlatform
- For pure client tasks (bebras-based) or presentation, simply place the files on a server. (This is temporary)
-
lti-to-bebras Wrapper to present tasks that conform to our Integration API, as LTI-compliant tasks. (also used with login-module to authenticate users through LTI)
-
pem-task-compiler TODO: still used somewhere?
-
pem-installation-api Empty
-
tmp-fioi-task-demo TODO
-
fioi-tasks-template TODO
This set of tools is used to offer programming tasks, where the solutions of the students are sent to servers to be graded.
-
TaskPlatform This is the main interface that hosts programming tasks, and is the user-facing entry points of programming tasks.
-
fioi-editor2 This is the ace-based multi-file editor used by TaskPlatform to let the user edit different solutions in different languages, as well as different test cases. Also integrates a Blockly editor.
-
submission-manager This is an interface that presents the results of the grading of a submission. It is intended to be integrated in the TaskPlatform interface, or any similar interface.
-
graderqueue Submissions from students are sent to this queue, and different servers connect to that queue to obtain their next submission to grade. The repository also includes graderserver, which fetches tasks from this queue and sends them for evaluation to taskgrader.
-
taskgrader This is the tool that actually grades a submission, running it within a sandbox (isolate), on a list of specified test cases, etc. The repository includes lots of tools to create, test and submit tasks (documentation here).
-
Jvs2Java This is a simple script that converts programs written in the JavaScool language (a simplified version of Java), into pure Java, so that they can be graded
-
fioi-editor TODO. Previous version of fioi-editor2 ? Deprecated ?
- bebras-tasks This repository contains all past tasks from our Castor Informatique contest. These can be developped and tested outside of any platform. It uses:
- bebras-modules
These tasks can be tested as part of our contest archive on concours.castor-informatique.fr, or directly on castor-informatique.fr/questions.
- bebras-modules This repository contains all types of libraries that are used to create various interactive tasks. Each library should probably have its own repository, but we want non-developers to be able to install everything just with an svn checkout of a private repository where we work on future contest tasks.
- fioi-blockly Modifications to Blockly, overriding and adding some blocks to Blockly; meant to be included after Blockly. Modifications include:
- Support of dictionaries
- Support of std input / output functions
- Other: TODO Michel
- drag-and-drop-js This library is used to create tasks that make heavy use of drag & drop within various containers.
- bebras-math-template TODO. This is an example of task that uses MathJax
- task-editor This repository contains an editor that takes a json schema and some templates, and provides a visual interface to edit a task based on these.
- bebras-review This tool is intended to help members of the Bebras community to review tasks that are created by many countries each year, and help them select a subset of tasks for their contest.
- commonFramework This repository contains a few tools that are shared by several platforms. The main one is the synchronization framework, which takes care of synchronizing a subset of a mysql database with as small client-side database.
- oauth2-basicauth Used by the login-module. TODO: why forked?
- dbv Used to maintain the schema migrations of the database of different projects.
- lti Libraries to manipulate the LTI standard, used to integrate our tasks into platforms that support LTI, and to use LTI platforms as an authentication method for the login-module
- jschannel Used to communicate between tasks and platforms. We need to make sure we have a version that never changes, so that the API can be based on that specific version.