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:
- The Function name field on
/p/<problem-id>/manage - The function/method your
_placeholder.<ext>defines (what students fill in) - 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
- Static test cases —
_expected_outputs.json, and how results are compared - Dynamic test cases — reference solution + input generator
- Custom resolver — full control over running and grading
- Problem description — writing
readme.md - Placeholder code — writing
_placeholder.<ext> - Editing files — the in-browser editor