numbas

A completely browser-based e-assessment/e-learning system, with an emphasis on mathematics

https://github.com/numbas/numbas

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    13 of 38 committers (34.2%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.2%) to scientific vocabulary

Keywords

algebra assessment computer-algebra e-assessment education javascript mathematics newcastle-university numbas quiz scorm up-for-grabs
Last synced: 4 months ago · JSON representation ·

Repository

A completely browser-based e-assessment/e-learning system, with an emphasis on mathematics

Basic Info
  • Host: GitHub
  • Owner: numbas
  • License: apache-2.0
  • Language: JavaScript
  • Default Branch: master
  • Homepage: http://www.numbas.org.uk
  • Size: 41.4 MB
Statistics
  • Stars: 214
  • Watchers: 18
  • Forks: 125
  • Open Issues: 100
  • Releases: 25
Topics
algebra assessment computer-algebra e-assessment education javascript mathematics newcastle-university numbas quiz scorm up-for-grabs
Created over 14 years ago · Last pushed 5 months ago
Metadata Files
Readme License Citation Security

README.md

Numbas logo

Numbas is an open-source system for creating tests which run entirely in the browser. It has been developed by Newcastle University's School of Mathematics, Statistics and Physics.

For more information about Numbas and what it does, see our website at numbas.org.uk.

How to use Numbas

Documentation for Numbas users is at docs.numbas.org.uk.

Installation

This repository contains the Numbas compiler, which runs as standalone Python 3, but the most convenient way to use Numbas is through the web-based editor.

A publicly-available editor, requiring no set-up, is available at numbas.mathcentre.ac.uk. Or, you can follow our instructions for Windows, Mac, or Ubuntu to install your own instance.

If you decide to run your own installation, install the compiler's dependencies with pip install -r requirements.txt.

This repository is just one part of the Numbas ecosystem. See the numbas organisation for the other pieces, including the web-based editor, extensions, and VLE integrations.

Contributing to Numbas

Numbas is open source, and we welcome contributions of any sort. Bug reports or feature suggestions can be added to the GitHub issue tracker, or emailed to numbas@ncl.ac.uk.

See our page on contributing to Numbas for more information on how you can help.

We keep a list of tasks specifically for new contributors, under the good-first-issue label. There's a corresponding list in the editor repository, too. These tasks should be fairly straightforward to implement without much knowledge of how all the code fits together.

Development

This tool runs on the command line: run python bin/numbas.py to see the options. You can give it the name of a .exam file or pipe one in.

When making changes to the JavaScript runtime, it's a good idea to run the unit tests in the tests directory. These can run in a browser, or on the command-line.


Running tests in a browser

Start a local web server with python -m http.server and go to http://localhost:8000/tests. The tests under tests/jme contain tests to do with the JME system, and tests/parts contains tests to do with the part marking algorithms.

Running tests on the command-line

You can run the tests from the command-line using node.js:

Install the dependencies:

bash cd tests npm install

Then run the tests with:

bash npm test


If you make a change, please try to add unit tests to confirm that Numbas behaves as expected.

The Makefile in this repository collects together scripts to run the unit tests, and builds the API documentation. Linux and Mac OS have built-in support Makefiles, but Windows doesn't. On Windows, cygwin provides make.

API documentation for developers is at numbas.github.io/Numbas. This is generated using JSDoc, with a custom template. Run make docs to rebuild the API documentation into ../numbas-docs.

Copyright

Copyright 2011-18 Newcastle University

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can see a plain-English explanation of the license and what it allows at tl;drLegal

Copyright in the content produced using Numbas resides with the author.

Owner

  • Name: Numbas
  • Login: numbas
  • Kind: organization
  • Location: Newcastle upon Tyne, UK

Numbas is an easy way to create online tests. This organisation contains code for all the open-source Numbas software, including the runtime and editor.

Citation (CITATION.cff)

# YAML 1.2
---
cff-version: "1.1.0"
title: Numbas
version: "v9.0"
date-released: 2025-08-19
abstract: "A completely browser-based e-assessment/e-learning system, with an emphasis on mathematics."
message: "If you use this software, please cite it using these metadata."
url: "https://www.numbas.org.uk"
repository-code: "https://github.com/numbas/Numbas/"
license: "Apache-2.0"
authors: 
  -
    given-names: Christian
    family-names: "Lawson-Perfect"
    affiliation: "Newcastle University"
    orcid: "https://orcid.org/0000-0003-0490-3437"
  -
    given-names: William
    family-names: Foster
    affiliation: "Newcastle University"
  -
    given-names: Anthony
    family-names: Youd
    affiliation: "Newcastle University"
  -
    given-names: Christopher
    family-names: Graham
    affiliation: "Newcastle University"
  -
    given-names: George
    family-names: Stagg
    affiliation: "Newcastle University"
  -
    given-names: Laura
    family-names: Midgley
    affiliation: "Newcastle University"
contact: 
  -
    name: "e-learning unit, School of Mathematics, Statistics and Phyics, Newcastle University"
    email: "numbas@ncl.ac.uk"
    address: "Herschel Building, Newcastle University"
    city: "Newcastle upon Tyne"
    post-code: "NE1 7RU"
    country: GB
keywords: 
  - "e-assessment"
  - "e-learning"
  - education
  - assessment
  - mathematics
  - algebra
  - javascript
  - quiz
  - scorm
  - numbas
...

GitHub Events

Total
  • Create event: 6
  • Release event: 1
  • Issues event: 37
  • Watch event: 8
  • Issue comment event: 36
  • Push event: 139
  • Pull request event: 6
  • Fork event: 5
Last Year
  • Create event: 6
  • Release event: 1
  • Issues event: 37
  • Watch event: 8
  • Issue comment event: 36
  • Push event: 139
  • Pull request event: 6
  • Fork event: 5

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 2,953
  • Total Committers: 38
  • Avg Commits per committer: 77.711
  • Development Distribution Score (DDS): 0.045
Top Committers
Name Email Commits
Christian Perfect c****t@g****m 2,820
Anthony Youd A****d@n****k 32
Baleksas a****7@g****m 10
Will McNestry c****0@n****k 8
Jesse Hoobergs j****e@c****m 8
artemdou 4****u@u****m 8
janga j****7@g****m 8
Thomas Pilewicz t****z@g****m 4
James Maringa j****a@g****m 4
roldans r****2@h****m 3
chrisarap c****0@g****m 3
George Stagg g****g@n****k 3
Bill Foster B****r@n****k 3
George Stagg g****g@n****k 3
Yitao Huang y****o@u****u 3
alisahq a****q@u****u 2
Stacey Aston s****1@n****k 2
Lorcan l****s@y****m 2
Evi Vratsanou e****u@g****m 2
David Hadas d****s@g****m 2
Danil Polikarik d****k@i****u 2
Christopher Graham c****m@n****k 2
Christian Lawson-Perfect c****t@n****k 2
kalpitfulwariya k****2@i****u 2
Chris Graham c****m@n****k 2
Eze Rodriguez e****x@g****m 1
George Stagg g****g@g****m 1
Grant Gollier g****r@g****m 1
Jesse Hoobergs j****s@u****m 1
Christian c****n@u****) 1
and 8 more...

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 62
  • Total pull requests: 8
  • Average time to close issues: 6 months
  • Average time to close pull requests: 5 months
  • Total issue authors: 10
  • Total pull request authors: 7
  • Average comments per issue: 0.77
  • Average comments per pull request: 2.13
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 1
Past Year
  • Issues: 21
  • Pull requests: 4
  • Average time to close issues: 12 days
  • Average time to close pull requests: 10 days
  • Issue authors: 6
  • Pull request authors: 3
  • Average comments per issue: 0.52
  • Average comments per pull request: 0.5
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • christianp (42)
  • chrismgraham (7)
  • Lycanic (3)
  • wrushworth (3)
  • ugoertz (3)
  • Spruce8913 (2)
  • somanshurath (2)
  • msgj603 (2)
  • Xcatolin (1)
  • benbrawn (1)
Pull Request Authors
  • zpotthoff (2)
  • Baleksas (1)
  • G-Rowell (1)
  • nikitha10 (1)
  • stuwilmur (1)
  • dependabot[bot] (1)
  • Maheshwaran17 (1)
  • mthakurt (1)
Top Labels
Issue Labels
Interface (13) Confirmed Bug (9) Needs thinking about (6) Wishlist (5) Accessibility (4) Difficult! (4) good first issue (3)
Pull Request Labels
dependencies (1)

Dependencies

requirements.txt pypi
  • Jinja2 >=2.10.1
  • html5lib ==1.1
.github/workflows/tests.yml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
tests/package-lock.json npm
  • commander 7.2.0 development
  • globalyzer 0.1.0 development
  • globrex 0.1.2 development
  • node-watch 0.7.3 development
  • qunit 2.19.1 development
  • tiny-glob 0.2.9 development
  • @tootallnate/once 2.0.0
  • abab 2.0.6
  • acorn 7.4.1
  • acorn 8.8.0
  • acorn-globals 6.0.0
  • acorn-walk 7.2.0
  • agent-base 6.0.2
  • asynckit 0.4.0
  • browser-process-hrtime 1.0.0
  • combined-stream 1.0.8
  • cssom 0.3.8
  • cssom 0.5.0
  • cssstyle 2.3.0
  • data-urls 3.0.2
  • debug 4.3.4
  • decimal.js 10.3.1
  • deep-is 0.1.4
  • delayed-stream 1.0.0
  • domexception 4.0.0
  • entities 4.3.1
  • escodegen 2.0.0
  • esprima 4.0.1
  • estraverse 5.3.0
  • esutils 2.0.3
  • fast-levenshtein 2.0.6
  • form-data 4.0.0
  • html-encoding-sniffer 3.0.0
  • http-proxy-agent 5.0.0
  • https-proxy-agent 5.0.1
  • iconv-lite 0.6.3
  • is-potential-custom-element-name 1.0.1
  • jsdom 20.0.0
  • levn 0.3.0
  • mime-db 1.52.0
  • mime-types 2.1.35
  • ms 2.1.2
  • nwsapi 2.2.1
  • optionator 0.8.3
  • parse5 7.0.0
  • prelude-ls 1.1.2
  • psl 1.9.0
  • punycode 2.1.1
  • safer-buffer 2.1.2
  • saxes 6.0.0
  • source-map 0.6.1
  • symbol-tree 3.2.4
  • tough-cookie 4.0.0
  • tr46 3.0.0
  • type-check 0.3.2
  • universalify 0.1.2
  • w3c-hr-time 1.0.2
  • w3c-xmlserializer 3.0.0
  • webidl-conversions 7.0.0
  • whatwg-encoding 2.0.0
  • whatwg-mimetype 3.0.0
  • whatwg-url 11.0.0
  • word-wrap 1.2.3
  • ws 8.8.1
  • xml-name-validator 4.0.0
  • xmlchars 2.2.0
tests/package.json npm
  • qunit ^2.19.1 development
  • jsdom ^20.0.0