“Save and Reveal” Discussion Activities in Moodle VLEs and Jupyter Notebooks

Having a quick peek at some of the materials that have been produced for a new OU course that I’ve had nothing to do with, I notice a new to me VLE interaction style in the form of a FreeResponse text box…

The activity design provides some set up, encourages the the learner to make (and record) a free text response, and (once some text has been enetered into the free response area), a sample discussion can be displayed.

In the underlying markup, the structure is defined as an activity embedding a question, an interaction and a discussion.

<Activity>
  <Heading></Heading>
  <Timing></Timing>
  <Question>
     <Paragraph>In your own words, write brief definitions of the following terms that you’ve seen so far.</Paragraph>
     <BulletedList>
       <ListItem>supervised learning</ListItem>
       <ListItem>unsupervised learning</ListItem>
     </BulletedList>
  </Question>
  <Interaction>
    <FreeResponse size="formatted" id="act_x"/>
  </Interaction>
  <Discussion>
    <Paragraph>Your descriptions will, of course, differ from mine. That’s OK, so long as you’ve understood the key idea behind each term.</Paragraph>
     <BulletedList>
       <ListItem>Supervised learning: learning where the training data is labelled with the ‘correct answer’, such as the correct classification or final result.</ListItem>
      <ListItem>Unsupervised learning: learning where the training data has no labels so the learning system has to make its own discoveries about what the data means.</ListItem>
    </BulletedList>
  </Discussion>
</Activity>

Here’s what the underlying OU-XML looks like;

In the materials I produced for a module update last year, I’d started making use of a related pattern we’d started exploring in the data management module notebooks, specifically, explicit calls to action that get students to engage in note taking and reflection at certain points in the notebook.

My actual aim is to get students to take full ownership of the notebook materials so that they are more likely to annotate them at will; but for a first year equivalent module at least, or in a module where students are exposed to Jupyter notebooks for the first time, we need to coach learners into feeling that they can and should really make their own inline notes when they feel it is useful to do so…

Here’s an example of a simple call out suggesting a student makes some form of commentary. This is done outside of a “formal” activity and is presented in line, almost as a prompt to make a marginal comment:

Structurally, the coloured section is rendered using the nb_extension_empinken Jupyter notebook extension based on a cell tag:

For other examples of using the nb_extension_empinken extension, see “Try it and See” Interactive Learning Activities in Jupyter Notebooks.

Calls to action for making comments as part of an activity are also used, and are supported by a hidden example discussion in an activity design that matches the activity design used in VLE FreeResponse activity:

The design pattern is actually a very old one that’s been used in OU materials for decades. I first saw it explicitly referenced in the OU materials bible, the SOL (“Supported Open Learning” guide) along with the notion of worked examples as if voiced by a tutor at your side.)

The markup for the call to action in my embdedded activity is not a million miles away from the markup used in OU-XML. Here’s what the markup looks like when the Jupyter notebook is saved in the myst-nb format using Jupytext:

Jupyter notebook tags for certain style markup can also be transformed into myst-nb admonitions that can be rendered natively in a Jupyter Book output. See for example the tags2myst utility in ou-jupyter-book-tools.

Generating this sort of markup from the OU-XML should be easy enough (eg using a XSLT transformation) but the reverse may be trickier when it comes to ensuring that all the cells associated with a single activity are hirearchically grouped as part of that activity. (Creating an activity ID applied to each cell as a tag or other metadata would be one say of solving this. But an issue still arises as to how the grouping should be managed within the notebook UI: selecting all cells associated with an activity an then clicking a toolbar button to group them would be one solution, but a method would still be need to use some optional style to indicate that contiguous cells are all part of the same group. I’m not familiar enough with CSS to know if or how that could be easily done using the notebook HTML structure?)

PS this has got me wondering whether I should put together a document that demonstrates possible mappings from all OU-XML tags, eg as described in the the OU-XML Structured Content Tag Guide (OU staff only). It might be useful if I also mined existing OU-XML documents (eg as per Reusing Educational Assets) to see if I could pull out various activity designs (such as the question-interactiveFeeText-discussion pattern) and demonstrate how those might appear in a Jupyter notebook editor, Jupyter Book HTML output, or myst-md “source” document.

Author: Tony Hirst

I'm a Senior Lecturer at The Open University, with an interest in #opendata policy and practice, as well as general web tinkering...

%d bloggers like this: