Grade anything, instantly, and provide a fully descriptive feedback to your students
Code, press submit, and receive your grade. Simply.
INGInious runs untrusted code made by your students in completely jailed environment.
INGInious can grade anything that can be used on a Linux machine, from C++ to Scala, including custom and exotic ones like Oz or even the Shakespeare Programming Language!
INGInious can be used side-by-side with your LMS, via the Web App, but can also be directly integrated within, via LTI.
New grading jobs start in milliseconds, and grading is as fast as it was made on your own computer. INGInious is also scalable horizontally.
INGInious uses Docker
to start jailed environments to test the code in milliseconds. Docker provides "containers",
which can be seen as lightweight virtual machines, that can be fully customized using a very simple method.
It allows to run anything you want, as long as it is runnable on a Linux machine.
Here is an example defining a new environment with Java 7, in two lines:
FROM ingi/inginious-c-default LABEL org.inginious.grading.name="java7" RUN yum install -y java-1.7.0-openjdk java-1.7.0-openjdk-devel ant ant-junit bc
INGInious is written in Python 3. The simplicity and expressivity of Python helps to keep the code readable and easily extensible.
Thanks to the usage of MongoDB as database manager and Docker, INGInious instances can be blindly duplicated and linked, allowing effortless horizontal scalability. From an on-site course with 50 students to a MOOC with 10.000 students, INGInious will be able to handle the charge.
INGInious supports the LTI specification,
allowing you to integrate it directly inside your Learning Management System (LMS) that is a LTI Consumer.
This includes Moodle, edX, Coursera and many other LMSs.
INGInious comes with two frontends: a simple web application that is a mini-LMS focused on code grading, and a frontend for integrating with your LMS. But INGInious is also a library, that can be used in other applications to remotely grade code using Docker and the containers made for INGInious.
The INGInious Web App is currently in use in 11 on-site courses, that sums up to more than 180 tasks and 500 students.
This includes courses that use lightweight tasks in Java, such as Computer Science 1, to course with really heavy tasks such as Advanced algorithms for optimization (in Scala) and Artificial Intelligence. The course Computer systems I grades low-level C code with INGInious.
INGInious is also used on the computer science MOOCs that the UCL runs on edX:
Used since 2014, INGInious has successfully ran the exercises from the 7000 students that followed the courses. These courses use an exotic language made for learning called Oz.
INGInious is completely free and open-source, under the AGPL license.GitHub repository