Softanza
StartFrançais
Softanza
Education · a cohort, an exercise, a chapter of your own

I teach, or I design courses

A teacher uses Softanza to set exercises that are checked by running, to follow a cohort through a report that is itself a narration, and to coach where a program cannot. A course designer writes chapters in plain text whose cells all run. Here is each step, run.

What a teacher does, in order

  1. Choose the course and the world. The library carries four courses today (the elementary introduction, nine missions set in Zindara, governed agents, mathematics) and three worlds the examples reason over: a restaurant, a cooperative, a school. An institution can lay its own world over any of them: the overlay.
  2. Form a cohort. A cohort is a folder with a three-line file: its name, the course it follows, and, if there is one, the overlay it lives under. Each learner is a folder inside it, holding their own work and their progress.
  3. Set exercises. The course already holds 23. Yours have the same shape: a task in each language, a promise, at least one answer known to be wrong and one known to be right.
  4. Learners submit. The checker runs each submission in a fresh process and writes the verdict into the learner's folder. Nobody reads the code and compares it with a model answer.
  5. Read the report. One call writes the cohort's progress report. The report is a narration: every figure in it is a promise beside the cell that computes it.
  6. Coach. The tutor asks the one question a learner is missing; it never gives the answer. What a program cannot do is yours: the room, the encouragement, the second explanation, the decision to move on.

A cohort, run

Softanza
StzEngineDirCreatePath("cohorts/niamey-2026")
write("cohorts/niamey-2026/cohort.zknw", 'knowledge "niamey-2026"' + char(10) + char(10) + "facts" + char(10) +
        "    niamey-2026 | is-a | cohort" + char(10) + "    niamey-2026 | follows | elementary-introduction" + char(10))
oCohort = StzCohortQ("cohorts/niamey-2026")
oCohort.AddLearner("amina")
oCohort.AddLearner("moussa")
? @@( oCohort.LearnerIds() )
Output
[ "amina", "moussa" ]

run on 2026-10-04 01:18 inside the library at commit 0e72e2e2c

The cohort file is the three lines the guide describes, and AddLearner made a folder for each learner under it. Nothing else was installed.

An exercise is a promise

An exercise is a short task and the lines the learner's program must print. It enters the course only when a known-wrong answer has been seen to fail and a known-right one to pass, and the two are run again each time the course is checked.

Softanza
oProgram = oCohort.ProgramQ("../../education/program")
oExercise = oProgram.CourseQ("elementary-introduction").ExerciseQ("ex-01-01")
? oExercise.Task("en")
? @@( oExercise.Promises() )
? oExercise.Check( read(oExercise.WrongAnswers()[1]) ).Passed()
? oExercise.Check( read(oExercise.RightAnswers()[1]) ).Passed()
Output
### Exercise 1.1 · The kitchen's list

The kitchen received these orders today:

    [ "tea", "rice", "tea", "fish", "rice", "tea" ]

Print the list of dishes to cook, each one once, in the order in which it was first ordered.

Your answer is checked by running your program. Nobody reads it and compares it with a model answer.

[ '[ "tea", "rice", "fish" ]' ]
0
1

run on 2026-10-04 01:18 inside the library at commit 0e72e2e2c

The first 0 is the known-wrong answer, refused; the 1 is the known-right answer, accepted. The same call judges a learner's file, in the learner's language, and it is what the checker runs.

The report is a narration

Softanza
oCohort.LearnerQ("amina").Submit( oExercise, read(oExercise.RightAnswers()[1]) )
? read( oCohort.WriteReport("../../education/program", "") )
Output
# Progress of cohort niamey-2026

*Course elementary-introduction, overlay (none), 2 learners, 23 exercises. Every figure below is a promise beside the cell that computes it: run this file through StzChapterQ, and it says whether it is still true.*

| Learner | Exercises passed | Levels earned |
|---|---|---|
| amina | 1 of 23 | none |
| moussa | 0 of 23 | none |

[...]

run on 2026-10-04 01:18 inside the library at commit 0e72e2e2c

Under the table, one cell per learner computes that learner's line, with a promise beneath it. Run the file through the library again and it says whether it is still true: after another learner passes, the old report reports its own staleness, and a regenerated one holds. A teacher keeps the report as a file, in a repository if wanted, and it never goes out of date silently.

Design a course

A chapter is a plain text file, NN-slug.en.md, in the house narration format: prose and cells, each cell followed by the lines it must print. A stored output is refused when the course loads, because an output that is stored can be wrong. A chapter ends with a recap in three parts: what was achieved, why it matters, what comes next. The same chapter has one edition per language, and a missing edition is a failing guard.

Built in

built

Twenty-five skills in seven families (formulate, express, patterns, see, know, govern, craft), each at three levels, Foundation, Practitioner, Expert, with an evidence field naming the guard that proves each level. Three stages: Encounter, Expression, Governance. Five profiles (young, student, professional, designer, decision maker) that change the depth and the examples, not only a note. Missions set in Zindara, Niger, so that each step runs real code. Built, not tested: a level is earned by a project that passes its guards, never by an exam.

Refused, with the reason

A gentle dialect to export from: not needed, because near-natural chains and instructions in your language are Softanza itself. Experience points and leaderboards: a pass is evidence, not a score. An exam-based certificate or signed credential: the fingerprint of the work handed in replaces it. An AI-model tutor: refused by law; the tutor runs on the natural layer.

Proposed

proposed

Progressive revelation: a concept appears only when the learner's previous work shows readiness, judged by the guards. It needs the learner's progress, which only the desktop reader can see, so it is the library's to build. Two neighbours are built: the ladder always visible (every chapter of the reader names its rung) and from the cell to its proof (every cell links to its run).

The Softanza way Narrative before syntax; one idea at a time; errors as information about what still needs to be declared; declare, then see.

The library's own guide for the people who author courses: CHARTER.md(opens in a new tab). Next, the institution's door: an overlay, cohorts, ownership.