Essentially, implementing the Course Structure as a Directed Acyclic Graph for a course structure, as opposed to a simple tree, allows course authors to embed an xblock in multiple places, as one modular component.
Here are some notes from a conversation with Piotr on examples of use cases:
- Pedagogical use cases
- e.g., I show you a problem, have you read it and maybe do as much as you can, and have that motivate a segment of knowledge transfer (watch a lecture, or the active learning equivalent there-of, and then do the problem)
- Non-pedagogical use cases
- e.g., If you want the same discussion component, you can build it cleanly as a pure XBlock with a DAG. Without, you need to implement workarounds such as special discussion IDs.
- Likewise for different bits of progress tracking, profile information, etc, if they are implemented as xBlocks.