Question types: ProFormA Programming Task

Maintained by Picture of Karin BormKarin Borm
Quiz question type for automatically graded programming questions. Java questions using JUnit can be created directly in Moodle. Other questions need to be imported as ProFormA tasks ( Plugin requires the qbehaviour_adaptiveexternalgrading plugin and a back-end that conforms to the ProFormA request/response format version 2.0.
22 sites
5 fans
Current versions available: 2

The ProForma Moodle Question Type is a Moodle Plugin that is used for
automatically grading programming questions in Moodle quizzes. Questions are
stored in the ProFormA format ( version 2.0.

Standard test frameworks (e.g. JUNIT for Java) are used for specifying tests. So there is no
need to learn a new test description language. The plugin comes with a built-in
Java question generator.

Tests are run on an back-end system (grader or test runner) that also conforms to the ProFormA standard
( version 2.0. 
Simple Java questions can be created in Moodle with the ProFormA question editor.
On the other hand questions with any programming language can be imported as long as
the test runner supports the programming language.

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

  • Java code can be checked with JUnit and Checkstyle
  • various submission formats:
    • editor with programming language support such as syntax highlighting or automatic indentation
    • 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

The ProFormA question type requires:

Import from external sources

For importing questions from an external source an import plugin is available (optional):  

We have a separate Javascript editor for creating tasks (  An online version is available at Of course ProFormA tasks can be created by different other external tools as well.


Screenshot #0
Screenshot #1
Screenshot #2


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

Comments RSS

Show comments
  • Picture of Plugins bot
    Thu, Jul 25, 2019, 4:00 PM
    Approval issue created: CONTRIB-7791
  • Picture of Kyriakos Iakovou
    Tue, Jan 14, 2020, 5:17 AM
    Is this plugin be longer available for moodle 3.8?
  • Picture of Karin Borm
    Tue, Jan 14, 2020, 3:02 PM
    It is also planned to support moodle 3.8 but I have not yet tested it.
  • Picture of Kyriakos Iakovou
    Tue, Jan 21, 2020, 5:07 AM
    Ok, I am waiting...
  • Picture of Максим Михайловский
    Sun, Apr 12, 2020, 11:21 PM
    Failed to connect to localhost port 8001: Connection refused

    What can be done?
  • Picture of Karin Borm
    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.
  • Picture of Максим Михайловский
    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.
  • Picture of Karin Borm
    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.
  • Picture of Karin Borm
    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