-
Notifications
You must be signed in to change notification settings - Fork 7
Grading containers
Given the architecture of UNCode, it is possible to plug in new grading containers (Docker), these containers are in charge of running the students' submissions. We have developed three new grading environments and each one is in charge of grading a different type of tasks: multiple languages, HDL and Notebook tasks. The corresponding containers are in the repository JuezUN/INGInious-containers, also the Docker images are stored on Docker hub.
A grading container is a container that executes a submission and generates feedback and a grade from it. It typically runs a script, which for the case of UNCode, is created automatically by the grader generator plugin. A submission is sent to a grading container and it starts running their code against some given tests, every test runs in a sub-container, launched from the grader container, that secures the grading code avoiding the student can interact with it (sandbox). The containers, are called student containers, are started using a provided API run_student.
The developed grading containers, follow a series of hierarchy as they share some functionalities across the different containers. Below is a diagram that shows this hierarchy for all containers. Here are explained each container:
The code related to this container is in the main repository. This container contains all the logic to run the submissions and send back the feedback to the student. Also, provides all utilities to start the run_student
container (sandbox). This container is developed by the INGInious team.
This container is not directly in charge of evaluating a student's submission, it contains code that all the other grading containers use to evaluate the submission in the correct environment, some classes are created to standardize the way the submissions are evaluated. Find the code here.
This container is in charge of evaluating multiple language submissions that include C, C11, C++, C++11, Java 7/8 and Python3, as well as custom input executions. Here are accepted either single code submission or file project submissions. Find the code here.
As this container inherits from the multilang
container, it uses the same code as in multilang, the difference of this container is that it allows submissions that uses python modules, commonly used in data science such as: Pandas, NumPy, among others. The Dockerfile
is here.
Container in charge of grading Jupyter Notebook submissions, for that, it receives a .ipynb
file with the student's code and it is executed against test cases (see How to create a task). Then, this is a different grading environment which can be selected in the task settings on UNCode. Check the source code.
Submissions with Verilog and VHDL code are graded inside this container. The code is here.
Check the repository JuezUN/INGInious-containers to learn how to start contributing to this repository, also, check the documentation: How to create a new container in case a new a new grading environment is needed.
UNCode - Distributed and maintained by the Universidad Nacional de Colombia, Campus Bogotá.
Visit the UNCode web page.
Visit UNCode.
- Home
- User's Documentation
- Developer's Documentation
- Deploy UNCode
- Others