This immediately made me think of the process our Product Science team at Medium recently built for managing/scheduling data pipelines.
Sequencing is a tricky issue for us because there are often long chains of branching-off dependencies. For example, to calculate our internal “active users” metric, we need to make sure we’ve first imported the users table, and then that is used to calculate our visits table, and then separately we import all the events, and then once we have both events and visits, we use both of those to calculate active users.
In our previous analytics system, pipelines kicked off their own dependencies. For example, once the users table import pipeline finished, it kicked off the visits pipeline. However, it quickly became too unwieldy to manage all of the dependencies. So we switched to the reverse, “prevalidators”. Now, every pipeline has a list of all the prevalidator pipelines that need to finish before it runs. Every 5 minutes, every pipeline checks if its prevalidators are done. The active users import, for example, continually checks if the visits and events imports are both done for that hour, and then it runs once both checks pass. And before that, the visits import is continually checking if the users import is done before running. The result is a branching tree of dependencies that is easy to manage and scale out because any given pipeline only has to check for its own prevalidators. When one pipeline gets backed up, all of its dependencies end up automatically waiting for it to finish, and then they all automatically catch up when the pipeline is working again.
Anyway! This is a long explanation of what I think could be a parallel to lessons and their prerequisites. (I’m not sure if “lesson” is the atomic unit you want to use, but I’m guessing this system would involve some unit roughly analogous to a lesson.) I could imagine a system where anyone can create their own lesson and list other lessons as prerequisites. It wouldn’t require describing the full linear sequence of lessons, but rather just a suggestion for the preceding lesson. Maybe a few options: “I recommend completing any of lessons A, B, or C before this lesson.” And then maybe lesson A suggests completing X, Y, or Z first. As a result there could be multiple paths to get to a given lesson. But overall it could be a nicely scalable way to manage the progression of learning, across many potential sources/educators/paths, without having to define a single linear curriculum.
Maybe you were already thinking of something similar to this! Or maybe you’re thinking of something even less structured. Anyway, I thought the data pipelines provided an interesting analogy/approach.