Numbas is 10 years old!

This week marks ten years since we first released Numbas as open-source software.

Here’s what it looked like back then:

Screenshot of the original Numbas interface.

Development on Numbas began in September 2009, and once it was ready to use I made it a priority to make sure it was released under an open-source licence so it wouldn’t languish in obscurity at Newcastle.

The first version, released on April 25th 2011, was a straightforward replacement for the commercial system we had been using, i-assess. It supported mathematical expressions, number entry, all the multiple choice part types and text match. There was no web-based editor, so exams were written as plain text files and compiled using a Python script. There was already support for extensions: my demo exam had an interactive JSXGraph diagram, linked to some number inputs.

I don’t really know how best to mark this anniversary, so here’s a timeline of when some key features were added:

  • May 2011: submit parts individually.
  • August 2011: resuming in-progress attempts; ability to print an exam; parts can give detailed feedback across several lines; distractors for multiple-choice parts.
  • November 2011: the matrix and vector data types; variable name annotations; localisation.
  • April 2012: the except operator and the printed worksheet theme, thanks to suggestions from Peter Rowlett following his PhD research.
  • October 2012: the web-based editor at (blog post).
  • July 2014: Dutch and Norwegian translations; review mode; precision restrictions for number entry parts; custom marking scripts in JavaScript. (blog post)
  • December 2014: variable testing conditions. (blog post)
  • January 2015: the matrix entry part type; fractions allowed in number entry parts. (blog post)
  • June 2015: Custom layouts for match choices with answers parts; adaptive marking (blog post).
  • June 2016: Numbas 2.0. (blog post)
  • July 2016: the GeoGebra extension. (blog post)
  • November 2016: the Numbas LTI tool provider. (blog post)
  • December 2016: the extension part type; question groups; introduction and results feedback messages (blog post)
  • March 2017: number notation styles. (blog post)
  • May 2017: Numbas 3.0; JME marking algorithms; custom part types. (blog post)
  • August 2018: the quantities extension. (blog post)
  • May 2019: Numbas 4.0; new pattern-matching system; more numbre types; the Eukleides extension. (blog post)
  • June 2020: Numbas 5.0; explore mode; alternative answers; menu mode. (blog post)

And that brings us up to date! This year I’m working on diagnostic testing, hoping to replace the very old DIAGNOSYS system used by first-year engineering students at Newcastle with a Numbas exam. The main idea is that the questions shown to the student depend on how they’ve done so far, omitting questions on topics the student has already shown they understand, and drilling down to diagnose missing knowledge when they get something wrong. I’m looking at other models of adaptive testing, too, such as a “mastery” approach where topics are repeated until passed, item response theory, and others.

10 years in, Numbas is firmly embedded in the curriculum at Newcastle, it’s been translated into 18 languages, and the Numbas editor at mathcentre has over 6,000 registered users from over 1,000 institutions.

Thank you to everyone who has contributed to Numbas, by directly writing code or translations, by suggesting new features, by reporting bugs, and just by using the system.