-
Notifications
You must be signed in to change notification settings - Fork 0
Home
INGInious version for Universidad Nacional de Colombia - Bogotá campus and was born as a necessity in the university to grade the students' programming skills in an academic way instead of a competitive way.
INGInious provides a simple and secure way to execute and test untrusted code. It has been developed by the INGI department (Université catholique de Louvain) to automatic grading of programming assignments. The whole tool is written in Python (version 3.5+) and relies on Docker to provide secure execution environments and on MongoDB to keep track of submissions.
Additionally, some time ago, in the Systems and Computing engineering program (Universidad Nacional de Colombia) was born the idea to have our own application to assess the students' code, that is why we started this version.
INGInious is based on the concept of tasks . A task is a set of one or more related (sub)questions. For each task, an infinite number of submissions is allowed, but a user must wait for the result of its current submission before trying a new one.
For simplicity, tasks are grouped by courses. Usually, an INGInious course has one task per assignment.
A submission is a set of deliverables (chunks of code, files, archives, etc.) that correspond each to one of the (sub)questions of the task. The idea is to provide a feedback on the submission by compiling, executing or applying any form of checking and testing to the deliverables. In its simplest form, the feedback consists of either success or failed.
To understand more about how are graded this submissions, please go to the next link: How does work the automatic grader
INGInious comes with three distinct parts, the backend (and its agent) and a frontend.
The backend (see dev_doc/backend) receives the code of the students and sends it to its agent (see /dev_doc/agent), which is the responsible to send it to a Docker container, and interact with the request made by the container.
That container then makes some verifications on the submission and returns one of the following four possible status : success, crash, timeout,or failed.
INGInious also provides a frontend (see /dev_doc/frontend). Made with MongoDB as database, the frontend is in fact an extension of the backend and allows students to work directly on a website. This frontend also provides statistics and management tools for the teachers.
Most of these functionalities can be extended through plugins (See how to create a plugin).
For a more advanced view of the architecture of INGInious, see Understand INGInious.
Docker containers are small virtual operating systems that provides isolation between the processes and resources of the host operating system. Docker allows to create and ship any software on any free Linux distribution.
As there are no hypervisor, the processes launched into the container are in fact directly run by the host operating system, which allows applications to be amazingly fast.
Docker allow teachers to build new containers easily, to add new dependencies to the tests applied on the student’s code (see How to create a new container).
- Home
- Installation, Deployment and update:
-
User's Documentation:
-
Course administration
- Tasks:
- How to create a task
- How to configure the grader
- How to assess a project
- Tasks:
-
Course administration
-
Developer's Documentation:
-
Understand INGInious
- Data base structure
- About pythontutor
- About codemirror linter
- How to create plugins
- How to add a new subproblem for a task
- Understand automatic grader
- How to test
- How to create statistics
- How to create a new container
-
Understand INGInious