Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

...


Warning

This is the first of several Blockstore draft proposals, the most recent and current of which is at Blockstore Design.


Development of this proposal is being funded by Harvard LabXchange and the Amgen Foundation, with significant in-kind contributions from edX.

...

  • A physics teacher searches all publicly available Open edX content and finds several videos about the second law of thermodynamics, as well as an interactive animation that explains entropy. She creates a “Playlist” consisting of three video Units and an HTML Unit that contains the animation.
    • The “playlist” application internally creates a Collection containing one ContentSet to represent this playlist. The ContentSet contains four Links (one to each Unit). Separately, the playlist application records the order of the links.
    • If any of the Units used in the playlist get changed or deleted, the Playlist app will receive a notification and can choose to update the Playlist by updating the Links in the ContentSet or not.
  • A typical Open edX course tree could be modelled using ContentSets plus metadata: A root ContentSet would contain Links to each “chapter” ContentSet, which would each contain Links to each “subsection” ContentSet, which would each contain Links to each Unit.
    • This is not saying courses should be modelled that way, but is pointing out the flexibility. In particular, courses modelled as ContentSets could be cyclic graphs as far as Blockstore cares, potentially even worse than today’s course DAGs in terms of edge cases.
  • A fully adaptive course may not define a hierarchy of content, but rather consist of a ContentSet containing a vast pool of content, and a machine learning-based adaptive algorithm that constructs a unique “pathway” through the content for each learner. (Learner 1 sees Intro > What are Objects > Subclassing > Test, while Learner 2 sees Intro > Advanced Topics > Advanced Inheritance in Python > Test > Advanced Test).

TODO: Is this sort of model useful, or do we really just need a way to indicate that certain content is in use for some application, without any attempt to model structure?

TODO: Should ContentSets support (optional) ordering of the links they contain? It seems like an extremely common use case, and would make a lot of things (like modelling playlists and course trees with ContentSets) cleaner. If ordering etc. is always kept externally, then we may not need the ContentSet concept at all.

...