/coals_core

Extraction of github.com/bbc/coals/package/coals as a separate repo

Primary LanguagePythonApache License 2.0Apache-2.0

A Dynamic Adaptive Learning System with inference
=================================================

Note: this is a prototype of the core for a system that:

  * Targets a JSON serialisation of a resource/concept collection

    - The serialisation can be used independently of the authored content
      and the python codebase

  * Allows a markdown/MIME-like interface for the creation of resources and
    content.  This is to allow creation/editting of resources by
    geographically disperse groups

  * The system tries to model the ngram state of the user.  That is their
    understanding of concepts.  There are rules determining decay of state. 
    The interpretation of this is left to clients.

  * Concepts are what the users try to learn.  These have dependencies.
    If these are not declared, the system tries to infer them from the
    resources.

  * Resources describe concepts.

  * Resources may be declared to depend on other resources.  In practice,
    they are made to depend upon the concepts in those resources.  This is
    to enable flexibility.

  * Resources primarily depend on other concepts.  This allows dropping in
    resources that explain the same concepts, with either the same
    dependencies or simpler ones.

  * Dynamism in resources:

      * If new resources are dropped in, they can provide alternative routes
        through.  For example a large resource could be split into a handful
        of smaller ones each covering smaller concepts.  Alternatively, two
        resources may use different sorts of explanation (shorter, simpler
        language, etc).

      * If the core concept is "installing" you may have other concepts like
        "linux", "windows", "mac" which if selected would allow other
        resources that depend on those operating system specific things to
        be triggered.

      * This dynamism is what is relatively unique here.  This is what
        allows the resources to be created by multiple people without
        requiring a static structure.  The structure is derived dynamically
        when new resources are added.