Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Student projects/Automated grading of programs

From MoodleDocs

# SUBJECT TO CHANGE #

Abstract

This project has the objective to develop a plugin for Moodle, making it able to grade computer programming assignments automatically. This plugin is based in actual Assignment module, that gives us an easy way to allow students to upload any digital content for grading.

Epaile will make it easy to create new assignments and define the actions used to compile, execute, and evaluate student code. When students submit their solutions, Epaile will compile, execute and evaluate the code, according with solutions defined by teacher. Initially, Epaile will support Java and C++ programming languages, but it will be plugin based, so new languages can be added if needed.

This application will give teachers a way to organize students grades and of course more free time, and to students the possibility to know their grade immediately, and also check their evolution in course.

Deliverables

   * Improve actual Assignment module to support Epaile assignments.

Main features

Teacher configurable submission settings for an assignment include:

   * Due date
   * Opening date (when to start accepting submissions)
   * Limit on size of submissions
   * Limit on number of submissions allowed
   * Allow the option of specifying the names of the files required for the assignment
   * Optional early bonuses: extra credit for early completion
   * The actions used to compile, execute, and evaluate student code can be tailored by the instructors
   * Optional limit on memory size and execution time

Students upload their submissions:

   * Files to compile/execute must be single files (.java, .php, .c ...)
   * Multi-file submissions (like diagramas, DB schemas...) are accepted in the form of a zip or jar archive
   * All submissions and their results are archived independently
   * An assignment can be compiled before runing test, allowing students to be sure their code compile on server. Possibility to email teachers with compile errors.
   * An assignment can be graded immediately or in a given date (cron)
   * Show students as much information as possible. Number of submissions, date, compile error, grade...

Core features:

   * Plugin based architecture
   * Test security and performance issues before and during the grading automation

Implementation

Epaile's user interface will be implemented bassed on actual Assignment plugin, that means It will use PHP and HTML. No other option is possible.

We are using DOMJudge core for programs testing.

Code

Code at contrib module.