Make the notation, examples, and machine hierarchy usable before any construction work.
Interpret alphabets, ε, Σ*, word length, reversal, exponents, set-builder notation, tuples, and language operations without confusing symbols with sets of words.
Generate boundary examples and non-examples from quantified language definitions, always testing n = 0 and the empty word when allowed.
Classify a language as regular, context-free, or requiring a Turing machine based on the memory relationship the definition demands.
Recognise that the same language may be represented operationally, syntactically, or declaratively and keep the represented language separate from the notation used.
