Moodle Plugins directory: ProFormA Programming Question Type | Moodle.org
ProFormA Programming Question Type
Question types ::: qtype_proforma
Maintained by
Karin Borm
Quiz question type for automatically graded programming questions. Questions can be created in Moodle or imported as ProFormA tasks (https://github.com/ProFormA/proformaxml).
Plugin requires the qbehaviour_adaptiveexternalgrading plugin and ProFormA Praktomat (https://github.com/elearning-ostfalia/Proforma-Praktomat).
Latest release:
86 sites
281 downloads
20 fans
Current versions available: 8
The ProForma Moodle Question Type is a Moodle Plugin that is used for automatically grading programming questions in Moodle quizzes. Questions are internally stored in the ProFormA format (https://github.com/ProFormA/proformaxml).
Any other programming language resp. test framework can be used as long as the Praktomat (or any ProFormA compatible other test runner used as back-end) supports it. Since all code is open source, it can be easily extended to other languages and frameworks.
Copyright note: The renderer code partly bases upon the renderer from essay question type (Moodle core).
Small code parts (in particular in qbehaviour_adaptiveexternalgrading) are copied from Coderunner
(https://moodle.org/plugins/qtype_coderunner).
Features
The ProFormA question type also requires:
For importing questions from an external source you also need to install the ProFormA import plugin:
In order to generate the submission grade a predefined testsuite is run on an external server (Praktomat).
Standard test frameworks are used for specifying tests. Currently the following programming languages and test frameworks are supported:
- Java: JUnit 4, JUnit 5, Checkstyle
- C++: GoogleTest (CMake/make)
- c: CUnit, GoogleTest (CMake/make)
- Python: Python Unittest, Python Doctest
- Setlx: Test, Syntax Check
The plugin comes with a built-in Java question editor so simple Java questions can be created directly in Moodle.
More complex questions must be created outside of the system with a stand-alone editor (https://proforma.github.io/formatEditor/proformaEditor.html) or by other means (e.g. script). These questions can be imported by use of another Moodle plugin.
Copyright note: The renderer code partly bases upon the renderer from essay question type (Moodle core).
Small code parts (in particular in qbehaviour_adaptiveexternalgrading) are copied from Coderunner
(https://moodle.org/plugins/qtype_coderunner).
Features
- Various submission formats:
- editor with programming language support such as syntax highlighting or automatic indentation
- multi tab editor (explorer) for submission of more than one file
- file upload (for more than one file)
- external repository (version control system)
- Code snippet as starting point for student
- Immediate feedback for students (optional)
- Supported programming languages are only limited by the available grader back-ends
- Bulktest with model solution for administration purposes
The ProFormA question type also requires:
- the Moodle plugin "qbehaviour_adaptiveexternalgrading" (https://moodle.org/plugins/qbehaviour_adaptiveexternalgrading) for question engine adaptation and
- the ProFormA Praktomat to run the tests (https://github.com/elearning-ostfalia/Proforma-Praktomat).
Set the grader URI in qtype_prfoforma to match your Praktomat installation!
Optional plugins:
- Moodle-Plugin qformat_proforma (https://moodle.org/plugins/qformat_proforma, import for ProFormA questions)
You can get a separate Javascript editor for creating tasks at https://github.com/ProFormA/formatEditor. An online version is available at https://proforma.github.io/formatEditor/proformaEditor.html. Of course ProFormA tasks can
be created by different other external tools as well.
In order to download all students' submissions for e.g. checking for plagiats the plugins
- proformasubmexport: https://github.com/elearning-ostfalia/moodle-proformasubmexport and
- responsedownload: https://github.com/elearning-ostfalia/moodle-responsedownload
are avaliable.
Useful links
Contributors
Karin Borm (Lead maintainer)
Please login to view contributors details and/or to contact them
What can be done?
Possible problems:
* The submission URI could be invalid (check for '/api/v2/submissions' in your Moodle plugin settings)
* The task could not be found in Praktomat because of incomplete installation (first submission request is sent before Praktomat is ready). Try and reset Praktomat (1. docker-compose down 2. docker-compose build 3. docler-compose up 4. wait until installation is completed 5. retry submission in Moodle).
* What response format do you use? In case of 'version control system' the VCS URI could also be invalid.
ERROR: column "versioncontrol" does not exist
LINE 1: ...ptions SET vcssystem = "2" WHERE responseformat = "versionco...
^
UPDATE mdl_qtype_proforma_options SET vcssystem = "2" WHERE responseformat = "versioncontrol"
[array (
)]
Error code: dmlwriteexception
line 489 of /lib/dml/moodle_database.php: dml_write_exception thrown
line 293 of /lib/dml/moodle_read_slave_trait.php: call to moodle_database->query_end()
line 338 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->read_slave_query_end()
line 836 of /lib/dml/pgsql_native_moodle_database.php: call to pgsql_native_moodle_database->query_end()
line 340 of /question/type/proforma/db/upgrade.php: call to pgsql_native_moodle_database->execute()
line 703 of /lib/upgradelib.php: call to xmldb_qtype_proforma_upgrade()
line 1929 of /lib/upgradelib.php: call to upgrade_plugins()
line 713 of /admin/index.php: call to upgrade_noncore()
$DB->execute('UPDATE {qtype_proforma_options} '.
'SET vcssystem = "2" ' .
'WHERE responseformat = :responseformat', ['responseformat' => 'versioncontrol']);
That should make it work.