Building the "N correct answers in a row" AKA "Streak" XBlock

I have recently discussed the development of a new kind of XBlock with @Mattijs_Joosten. The general idea is to create an XBlock which presents questions to a student until a streak of N (typically N=5) questions have been answered correctly. The correct answer count is reset to 0 at every mistake.

Here are some mockups of the XBlock UI produced by @Mattijs_Joosten: note that they are drafts and may be modified in the final implementation.

Student UI:

Advanced settings:

Questions for the streak XBlock will be sampled from a content library:

Typically, questions will be generated from randomized scripts in order to avoid repetition:

Thanks to content libraries, the XBlock will support any type of quiz.

As for the programming implementation: I suggest to extend the LibraryContentModule which already exists in core Open edX. Based on this parent class, we should “only” have to overload certain methods (including the rendering methods and the evaluation callbacks).

The XBlock will be made available under an open source license to determine; I will be the principal maintainer and will happily merge bug fixes and well-tested implementations of new features.

Who else is interested in this project? You can help finance the project and have a say in the implemented features. Answer now!


The goal of this XBlock is to bring ‘one-concept mastery learning’ to Open edX.
Salman Khan, founder of Khan Academy, explains why we need it in this 10 minute video:

This kind of mastery learning can be useful in almost any setting, be it corporate or academic.
Personally I plan on using it in a corporate setting for training customer-service employees.

If you are interested just hit the reply button.


@regis @Mattijs_Joosten Very nice XBlock - and nice use of the content libraries! I haven’t heard anyone asking about something like this yet, but if someone mentions needing something close to it, I’ll direct them to this thread.


Very nice, and like Xavier said, good use of content libraries. The inclusion of re-randomized problems is really a good touch. We’re dealing with that very differently with our adaptive LTI tools - we’re auto-generating dozens of pre-randomized versions instead, storing them behind a conditional block to be delivered via XBlock URL. This seems like a substantially simpler approach.

1 Like

Update. For those interested in this topic last year or now: upcoming Blockstore functionality could create new possibilities for adaptive and randomized content. So we might get a form of ‘streak’ functionality, or a new starting point for it, built into the platform. Looking forward to it! You can check out the Open edX Architecture Hangout on Blockstore here: