Tasks involving writing interpreters for various languages or formalisms.

The interpreter tag is for tasks that call for writing an interpreter for a language, such as Brainf***, Befunge or a Minsky register machine.

If it is a task as well, it is sometimes necessary to leave out more complicated parts of the language. But usually some non-trivial sample programs in the given language should run in the interpreter.

A good set of test cases is often very helpful for this kind of task, as interpreters for languages may have more or trickier edge cases than traditional algorithmic tasks.