TER Learn course matrix

Draft for review. Columns are devices and their tracks, rows are knowledge areas. Every box is a path, and a path is an ordered set of courses. Click a box to see its courses; the boxes it builds on light up.

written all courses written in review waiting on a pull request partial some courses written planned not written yet

How paths and courses split

How dependencies get covered

  1. Course level stays as it is. The prereqs in each course.yaml are the truth for a course. They show on the course page and the panel here.
  2. Path level, new: a requires: list per path in paths.yaml, holding other paths. The rule is simple: every path requires the Peripherals path of its column. The few cross edges are written down: bare-metal Connectivity requires bare-metal Async (esp-radio and embassy-net are async), Capstones require Drivers, and On-Device AI on ESP requires Connectivity for CSI.
  3. Foundations are recommended, never enforced. Many readers come from the book or the newsletter and already know them.
  4. Soft gate, not a lock. A path shows "Builds on" with a tick per finished path. A learner can still enroll, and sees a one-line note with a link to what is missing. Hard locks only stay inside a path, where the LMS already orders courses.
  5. Skip ahead. Each Peripherals path ends with its assignments chapter; a learner who passes the assignment quiz of a path counts it as done for requires:, without enrolling in every course.
  6. One check in CI: a path may only require a path in the same column or a spanning row, and no cycles. path_sync writes the requirement into the Program description until the portal tab reads it.