Discovery: Courses Based on Atomic Learning Units
Goal or focus of the Discovery Initiative:
By re-architecting how the platform stores content and how it combines pieces of content together into larger learning experiences, we can unlock a number of learner and author experience improvements that have proved elusive to date:
Flexible content reuse, with tagging (use any XBlock or LTI component in libraries)
Fully integrated adaptive learning (true dynamic content)
Full-featured course previews
Template courses and runs (CCX-like functionality without limitations of CCX)
More flexible course experiences
Easier extension for developers via simpler APIs
Link to the discovery ticket or epic
https://github.com/openedx/platform-roadmap/issues/2
and it relates to
https://github.com/openedx/platform-roadmap/issues/67
(which is more LMS-focused)
Findings of the Discovery work
Technical discovery and planning will follow once we can agree on the ideal outcomes for the project - see below.
Call to action - What kind of feedback or input do you seek?
At this time we are seeking feedback on the high-level goals listed below.
Are any of these goals unnecessary? Are some more important than others? If all of these were implemented, is there other functionality related to course content composition/reuse/structuring you would still wish to have?
If we can only achieve a 3-4 of these goals, which are most important to you?
Granularity of re-use. Do you need to be able to re-use chapters? units? Or just individual XBlocks or pairs of XBlocks? (In this case, “re-use” refers to being able to use something in multiple courses and when you update the “source” version, it will update in every course where it is used. It doesn’t refer to just being able to copy a chapter or unit into a new run/course.)
To what extent are you interested in being able to share content across Open edX instances?
High level goals
Make content re-use easier
Tagging: As a content author, I want to create (or import) a bank of problems with metadata that makes them useful in a variety of courses.
Example: I want to import a bank of 5,000+ physics problems, tagged by topic and difficulty level. Then in a course that I'm authoring, for a homework assignment, I want to be able to randomly pull problems from the problem bank, filtered by topic and difficulty level.
Convenience: As a content author creating a course, I don't want to have to decide in advance if the content I'm creating is "re-usable" or not. I want to create it in the context where I'm working but later be able to re-use it.
Example: an existing course has a couple of chapters that I want to use in the new course I'm authoring. If I make edits to improve those chapters in the new course, I want the original course to benefit from those updates as well.
Bundling: Assets (image files, PDFs, videos) used by a particular learning component are stored with that component, not in a general "course files" area. That way, when I use the content in a new context, the assets/links aren't broken.
Make course re-use smarter
CCX-style: As an instructor, I want to make a copy of an existing reusable course, customize the outline (e.g. remove some sections), add a bit of custom content (e.g. introduction), then teach it. If improvements are made to the original template course while my course is running, I want to be able to pull in those updates.
Example: Campus and Davidson both had this use case
Alternative (simpler to implement): Derived courses can hide content from the “source” course but cannot add new content to it.
Enterprise: As a learning provider that targets enterprise customers, I want to take one of our popular courses and create a customized version of it for a particular enterprise customer. If improvements are made to the original template course while that customized course is running, I want to be able to pull in those updates.
Manageable: As a content author, I want to easily see what course instances are currently in use based on a given template course.
Pedagogical Flexibility
Mini courses: As a learning provider, I want to offer mini-courses that are smaller, simpler, and lighter than the current course experience. I don't want to be limited to the strict Sections, Subsections, Units hierarchy.
Paths: As a learning provider, I want to offer customizable programs that combine [regular or mini] courses together into programs/paths/certifications, and to combine those programs/paths into larger programs/degrees/certifications.
Example: complete at least four mini courses from this set and two from this other set to earn this certificate
Example: LabXchange
Adaptivity: As a course author, I want to integrate an external adaptive learning engine into my course that can customize what content each learner sees based on their learner profile, learning activity, and the available content. This may involve displaying output and UI components from the adaptive engine on some or all pages of the course.
Scriptable/Extendable: As a course author, I want a plugin or an external system to be able to control course behavior (what content individual users see, what notifications they get, how their grade is computed, etc.) using a standard API.
Backwards compatibility
Upgradability: As a course author, I want to be able to take advantage of these new features by upgrading my existing courses to support them, without having to re-create or re-work the course.
Alternative (simpler to implement): These new features are only available to newly-created courses.
Control
As an instructor I don't want a course to change without my knowledge and consent. When updated content is available I want to be notified and to approve the updates before my course instance is changed.
Alternative (simpler to implement): Updates always get applied immediately.
Content Flexibility
As a course author, I want to be able to install new learning component types without having to ask the Open edX instance administrator
Alternative (status quo): Only system administrators can install new XBlocks.
As a course author, I want to be able to use other content types besides XBlocks, such as LTI components or H5P components
As an Open edX developer, I want the system to support a new content API that is better sandboxed, runs asynchronously, and is more scalable.
All of these goals make sense to me, Braden, and the user stories all resonate. Solid market research! Thank you for sharing. I added a few in-line comments to compare notes on similar user stories I’ve been picking up on, all from the authoring perspective/persona.
On your question of granularity of re-use:
I’ve been playing with a “spectrum” framework to think about learning experiences and the content that comprises them.
At the extreme right of the spectrum of learning experiences is a full degree or stacked credential….
Which is comprised of multiple courses….
A course is then comprised of modules…
Modules are comprised of units,
Units are comprised of subunits
Subunits are comprised of learning objects - a video, a text, an assessment question, etc.
To me, any point on the of the above “spectrum” could be considered a singular atomic learning unit that, when sequenced together properly, lead to the achievement of a learning objective.
Currently, educators are “stuck” in two ways:
1. They are stuck in a linear, uni-directional pathway for building/sequencing, where the only “level” on the spectrum to land on is the full course.
2. They are stuck in a “top down” model of building learning experiences. The entire Studio experience starts with a full course view/full course learning objective, then cascades down the hierarchy.
This ties directly to your use cases of mini-courses and paths, and I wonder if we could/should push the boundaries of those even further. I’m thinking about this particularly in the context of blended learning environments. What if we were to:
Consider the learning object as the most granular level of re-use
Consider the starting point of authoring as a singular learning objective, rather than a full course or even a mini-course
Then the authoring experience becomes:
”As an instructor, I want to sequence together any given combination of atomic learning units, from single video to full modules, to achieve any level of learning experience.”
One sequence might simply be two learning objects: a webinar video and a set of comprehension questions [use case from Penn State]. Or it might be a mini course as you’ve described, maybe two or three units plus a quiz.
Regardless, by enabling multi-directional pathways for building/sequencing from the ground up, and by removing the “final destination” course structure, we empower educators to make the decision about which learning units are most appropriate to achieving whatever level of learning experience is unique/specific to their situation. (I think this pushes the conversation out of granularity of re-use in multiple courses, and into the space of full freedom for content sequencing and delivery.)
Which leads to interesting “food for thought” questions:
Can the current Studio authoring environment be pushed to that level of granularity, and the LMS for delivery? (where Dave’s learning core comes in, I think)
Can we make the authoring and delivering experience lightweight enough that it’s accessible to any faculty member teaching in a blended learning environment, for example? Do we want to do this?
On your question of whether any of these goals are unnecessary: (sorry, I’m going out of order!)
I wonder if it would be helpful to bucket the use cases into two areas:
-Use cases where the final destination is still the full course, but with substantially more authoring and pedagogical flexibility
-Use cases where the final destination is something other than a course, totally outside the boundaries of the module-unit-subunit hierarchy
Which goals would be most important/critical to each of those buckets? If there’s overlap, then those goals might rise to the top as priorities. If there’s no overlap, maybe it makes sense to consider focusing on one first, etc.
On your question of sharing content across Open edX instances:
I think this is a super compelling idea. We’ve been playing around with the idea of fostering “communities of practice”. For example, in the use case where Physics Educator wants to import a bank of 5,000 problems. How do we get to that bank of 5,000 physics problems? Could we nurture a community of physics professors who are creating/contributing/sharing problems? Ideally, that same group would guide the tagging taxonomies, ensuring adherence to standards relative to their subject expertise and curriculum-alignment needs. On top of that, if we had a lightweight Studio/authoring environment where any physics educator could easily sequence together and deliver homework, assessments, blended learning activities from that bank and outside of the “full course” structure, we could diversify adoption, for example in blended learning environments. This is all largely conjecture/vision for now, but I’m really interested in doing some more discovery work in this area, especially around faculty needs in blended learning contexts.