A course is a chapter of a program: an ordered group that holds lessons. A program is a list of courses, a course is a list of lessons, and the order of both is what a member follows.
A course is born last in its program and moves with an explicit reorder command — you submit the full ordered list, never a single move. Archiving one is terminal, exactly like a program.
Information
Composing content requires OWNER or ADMIN in the school: a course is
composed by whoever may change the program that holds it. Reading requires
OWNER, ADMIN or an organization-scoped program_director.