Skip to content

Problems

A problem is a coding challenge inside a course. It has a name, a function name (what students must implement), a language (python or csharp), optional tags, and a set of files.

Manage files at /p/<problem-id>/manage. The settings form there edits the name, function name, language, and tags — or ask the assistant to do it.

The files

Scaffold files start with _ and carry the language extension <ext> (.py, .cs), so they never clash with the readme or the student's own code.

File What it does
readme.md Problem statement shown next to the editor
_placeholder.<ext> Starter code shown when a student first opens the problem
_expected_outputs.json Static test cases — fixed inputs and expected outputs
_solution.<ext> + _generate_inputs.<ext> Dynamic tests: a reference solution plus an input generator produce fresh cases each run. Take priority over _expected_outputs.json
_resolve.<ext> Optional. Replaces the standard test runner — then you own writing the results

Any other files you add are stored but have no special meaning to the runner.

A problem needs either _expected_outputs.json or the _solution + _generate_inputs pair to run tests. readme.md and _placeholder.<ext> are optional: without a readme a default message shows, and without a placeholder students are told to ask an admin for one.

The function-name contract

This is the one rule that ties everything together, so it lives here and nowhere else:

The test runner calls exactly the function named in the problem's Function name setting. That means three things must agree:

  1. The Function name field on /p/<problem-id>/manage
  2. The function/method your _placeholder.<ext> defines (what students fill in)
  3. The function your _solution.<ext> defines, if you use dynamic tests

If any of the three differ, every submission fails with "method not found" — the most common authoring mistake. Mention the name in the readme too; students miss it.

Settings

Field What it does
Name Displayed in the course sidebar and browser title
Function name See the function-name contract
Language python or csharp — picks the editor mode and the sandbox
Tags Comma-separated labels shown on the problem's card

In this section