How do I create a problem?


Authoring a problem is one of the more complex aspects of authoring on Grok Learning. Problems are very flexible and allow you as an author a lot of control over what goes on. There are a number of attributes you can set on a problem, grouped in to a few functional categories.

  • Review log - the review notes for this problem
  • Meta - metadata like title and ownership
  • Content - the text of the problem and the files included
  • Choices - specifically for multiple choice problems, the choices available
  • Tests - the core of the problem, what defines a solution as passing or failing
  • Solution & Teacher notes - the solution to this problem and notes visible by teachers

Creating a new Problem

When you're creating a problem be careful to check the editor and language settings are right as they can't be changed. Owner should be the institution you belong to. Slug and title should reflect each other and the language.

  • Owned by - who owns this problem
  • Slug - used as a unique name for referring to the problem internally (e.g. py3-hello-world)
  • Title - public name of the problem
  • Editor - which editor to use (usually Default)
  • Language - what type of problem this is (e.g. Python, Java, Multiple Choice (Choices))

Cloning a Problem

Often it's useful to build problems fast by cloning older problems. This helps you bootstrap the problem and keep a consistent style.

To clone a problem, open the problem you wish to base the new one off and click the "Clone" button from the top actions. When the prompt asks if you're sure, click "OK". The new clone of the problem will automatically open.

Editing a Problem

On the problem authoring interface there are five tabs available.

Review Log

Provides a list of review comments, along with who made them and when. In addition, this shows the state of the problem at each log.

These states are useful for tracking progress on authoring a problem. There is a "Change Authoring State" button that allows you to leave a comment and optionally change the state. This button has the same functionality as the "Review" button at the top of the page.


This tab has some metadata about the problem.

  • You can change the owner of the problem, if you belong to multiple institutions.
  • You can change the slug of the problem.
  • You can change the title of the problem. Note that you should probably also change the slug in the information above to match the new name.
  • Author Notes can be added here. These are useful if you need to make note of anything.
  • If you tick the "Show advanced options?" box above the tabs, you can also see what problem this one was cloned from (if any), and go to that problem's authoring page.


The Content tab is where you write the description of the problem. This can be written in HTML or Markdown, and documentation of using both of these can be found here.

In addition, this page allows you to create, remove, or upload Workspace Initial Files. These are files that the learner will have when they first open the problem. They can include things like a scaffold for the initial program, extra program files, necessary images, and more. These can be hidden by starting the name with a double underscore, e.g.



Each problem can have a number of tests, each test will check an aspect of the students solution. For example, checking if their program works for positive numbers, and then a different test for negative numbers. This is the most complicated tab, and has its own documentation here: (TODO: Add link)

Solution & Teacher Notes

This is where you can define the solution (presented to learners after they've completed the question or the course has moved on). You can define multiple solutions by clicking the plus button under the list of solutions, and add more files to a solution by doing the same under the list of files. This is useful if there are multiple ways of solving the same problem that you want to demonstrate.

Below this you can write Solution and Teacher Notes, both in HTML or Markdown, as with the problem description. The Solution Notes are presented to the learner before the solution, and should explain how the solution works. The Teacher Notes are available to teachers and tutors of the course at all times, and are useful for noting areas that learners might have trouble with, or other educational advice.

Bonus: Advanced Options

These advanced options can be shown by ticking the "Show advanced options?" box.

  • On the Meta page, you can see which problem the current one was cloned from, as well as go to that problem.
  • On the Content page, you can view and edit which concepts the problem tests.

Multiple Choice

You can create a multiple choice question by choosing the "Choices" language. Multiple choice questions alter the interface slightly. They remove parts of the interface no longer relevant (like workspaces and tests) and add a new tab "Choices".

Each problem is a single multiple choice question. The question text goes in the "Content" and the available answers, feedback and settings go in "Choices".

In the choices tab you have these fields:

  • Question Type - Multiple Choice (one answer) or Multiple Answer (many answers)
  • Correct feedback - what to say when they got it right
  • Incorrect feedback - what to say when they got it wrong
  • Is Randomised - whether the options display in a randomised order (recommended)
  • Choices - the list of options students will have in responding to the question

Each choice/option then has these fields:

  • Label - an internal name (never seen by the student) for this option
  • Is Correct - whether this is a correct answer
  • Content - a content field (HTML/Markdown) that will be rendered to represent this option

Note: We're still implementing the multiple choice front-end so it's not possible to see how your questions will look just yet.

Advanced: Checking "Show advanced options" will bring back the workspace and tests tabs. Be careful when editing these files, as they are generated based on the choices settings. This should only be done if you understand what you're doing.

Marking Javascript Problems

Javascript problems overlap with HTML/CSS and are created with Language set to HTML. Each problem requires an index.html workspace file, to which you add a link to a separate workspace javascript file, commonly called problem.js or student.js (the name of this file is up to you).

Example  index.html:
<code>       <html>         <body>           <script src="program.js"></script>         </body>       </html>

Test cases that exercise Javascript features are created using the HTML Puppeteer driver. Each test should be configured with the Common Output Checker set to "Output JSON Checker", and will require a file of type Puppeteer.

We have an API document available that describes the marker features available for the Puppeteer test case file. The following versions are available: