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 ( Plugin requires the qbehaviour_adaptiveexternalgrading plugin and ProFormA Praktomat (
Latest release:
72 sites
16 fans
Current versions available: 4

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 (

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 (CMake/make)
  • Python: Python Unittest
  • Setlx: Test, Syntax Check
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.

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 ( 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

  • 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:

Set the grader URI in qtype_prfoforma to match your Praktomat installation!

Optional plugins:

For importing questions from an external source you also need to install the ProFormA import plugin: 

You can get a separate Javascript editor for creating tasks at  An online version is available at 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 

are avaliable.


Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4
Screenshot #5


Karin Borm (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Thu, Jul 25, 2019, 4:00 PM
    Approval issue created: CONTRIB-7791
  • Tue, Jan 14, 2020, 5:17 AM
    Is this plugin be longer available for moodle 3.8?
  • Tue, Jan 14, 2020, 3:02 PM
    It is also planned to support moodle 3.8 but I have not yet tested it.
  • Tue, Jan 21, 2020, 5:07 AM
    Ok, I am waiting...
  • Sun, Apr 12, 2020, 11:21 PM
    Failed to connect to localhost port 8001: Connection refused

    What can be done?
  • Mon, Apr 13, 2020, 1:39 PM
    Upps. I changed the Praktomat port from 8001 to 8010 a long time ago and forgot to change the default setting in the Moodle plugin. So, if you have installed Praktomat correctly then change the port in the qtype_proforma settings "URI: Protocol and Server" to 8010 or 80.
  • Tue, Apr 21, 2020, 6:01 AM
    Dear friends, thanks for developing this plugin. Tell me, is there a step-by-step instruction on its use? I changed the port to 80 and now I get 404 errors when trying to send a response. Thanks.
  • Tue, Apr 21, 2020, 12:58 PM
    There is no step-by-step instruction. Do you have more information about 404 (= file not found)? Look at the 'raw response' that is visible for the admin account.
    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.
  • Wed, Apr 22, 2020, 10:25 PM
    Possibly you must get the latest Praktomat version from Github. I just noticed that it did not start correctly (because of incompatibilties with django-tinymce version 3.x).
Please login to post comments