$customHeader
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

The goal of this project is to provide a common interface for creating scorable XBlocks.  The idea is to clearly specify what a (potentially third-party) block type needs to  implement in order to work properly with the grading service.  Additionally, we would like to create a shared implementation for common behaviors.  Rescoring problems and resetting attempts are two particular instructor management tasks we would like to create a common implementation for.


Phase 1: ScorableXBlockMixin and SXBM.rescore_problem()

  • Create a ScorableXBlockMixin that implements rescore_problem(), providing hook methods for specific block types to marshall and unmarshall their scoring data to and from a common format (dict or namedtuple, perhaps).
    • Blocks should be able to opt-out of rescorability, either as a whole or depending on configuration. (Survey-type questions, for instance)
    • only_if_higher functionality needs to be preserved.
  • Implement mixin and hooks for specific block types. (Start with D&D and ORA)
  • Refactor CapaBase to use the mixin. (Optional)

Phase 2: SXBM.reset_attempts()

  • Create shared reset_attempts() method, ensuring that necessary.
  • Include any additional hooks in specific block types that want to implement reset_attempts.
  • Refactor CapaBase to marshall the data needed for reset_attempts

Phase 3: Rescore container blocks

  • Implement a rescore task that traverses down from a container block to contained problem blocks
  • Provide access to this task in courseware.
  • No labels