Numbas
Developer Update

Christian Lawson-Perfect, Newcastle University

Localisation

Contributors

Translation

Arve Seljebu, Axel Hederstedt, Benon Paloka, Carolijn Tacken, Daniele Passalacqua, Faisal al-Malki, Florent Cayré, Frank Podborski, Helge Münnich, Hugo Ribeiro, José Klenner, Julio Mosquera, Lionel F., Marlon Arcila, Michele Passante, Moafak Mkhallalati, Pascal Renauld, Pedro A. García-Sánchez, Ricardo Monge, S. Y. Lee, Takahiro Nakahara, Tore Gaupseth, Welton Vaz, Yasuyuki Nakamura

Code

Christian Lawson-Perfect, Bill Foster, Anthony Youd, Chris Graham, Stacey Aston, George Stagg, Helen Ashton, Dave Gabrielson, Gerlou Shyy, Jake Steele, Mohit Jayanti Gurumukhani, James Ndegwa Maringa, Anbarasi U, Kaustubh Mallik, VSN Reddy Janga, Pablo Roldan, Mohit Jayanti Gurumukhani

Input feedback

Number notation

Part feedback is always visible

Group questions

Preview content areas

JSON data

Generate random names

Extension which provides functions to generate random names and associated pronouns

{name} puts {their} things where {they} like{s}.
                        
When people show things to {them}, 
{they} want{s} them for {themself}.
Zak puts his things where he likes. When people show things to him, he wants them for himself.

Generate random names

Extension which provides functions to generate random names and associated pronouns

{name} puts {their} things where {they} like{s}.

When people show things to {them}, 
{they} want{s} them for {themself}.
Eabha puts her things where she likes. When people show things to her, she wants them for herself.

Mathcentre taxonomy

LTI provider

SCORM is unloved by VLEs.

Most VLEs support LTI now.

We can add more Numbas-specific features.

LTI provider

LTI provider

  • You run the software on your server.
  • You connect to it from your VLE.
  • When a student opens an LTI activity, they're sent to your LTI instance.
  • It manages attempt data, and reports scores back to VLE.

LTI provider

Used at Newcastle for all Numbas assessment for two years.

Instructions:

numbas-lti-provider.readthedocs.io

Marking algorithms

Complete rewrite of marking algorithms.

All in JME, easier to understand than JavaScript.

Feedback is constructed in stages, from notes that work like question variables.

An example


...
valid_numbers:
    if(all(map(not isnan(parsenumber(x,"en")),x,bits)),
        true,
        let(wrong,filter(isnan(parsenumber(x,"en")),x,bits)[0],
          warn(wrong+" is not a valid number");
          fail(wrong+" is not a valid number.")
        )
      )

no_extras:
    if(all(map(x in expected_numbers, x, interpreted_answer)),
        true
      ,
        let(extra,filter(not (x in expected_numbers),x,interpreted_answer)[0],
            incorrect(extra+" is not in the list.");
        )
        false
      )

mark:
    if(studentanswer="",fail("You have not entered an answer"),false);
    apply(valid_numbers);
    apply(included);
    apply(no_extras);
    correctif(all_included and no_extras)

Student feedback

In the editor

Unit tests

Custom part types

Aim: Make marking algorithms reusable and easily configured.

Combination of input widget, settings, and marking algorithm.

For question authors, they appear like the built-in part types.

Custom part types

Custom part types

Custom part types

Custom part types

Documentation

Now lives at

docs.numbas.org.uk

The to-do list

As ever, more things than I have time to do.

Runtime: 74 open issues, 43 "wishlist", 9 "good first issue".

Editor: 39 open issues, 14 "wishlist", 5 "good first issue".

Help is very welcome!

github.com/numbas