No description, website, or topics provided.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Welcome to the Item Scoring Engine

The ItemScoring project is a group of modules that can be used for scoring student responses for different item types. This uses standard QTI response processing with custom operators, an extension point. This engine supports response processing on the following item scoring categories: Trivially scored, Machine scored, and Machine scored with custom operators. Refer to the custom operators document for more information on this. Instructions to install the customized SymPy library can be found in the docs directory, in the file called Running Item Scoring Engine.docx.


This project is licensed under the AIR Open Source License v1.0.

Getting Involved

We would be happy to receive feedback on its capabilities, problems, or future enhancements:

  • For general questions or discussions, or issues and bugs, please use the Forum.
  • Feel free to Fork this project and develop your changes!

2/11/2015 Release Notes

Release R01.00.23-20150211 is a bugfix release of the ItemScoring Engine with an updated, functional EQ scoring engine (see below for installation instructions). Related modifications in Student code have been made in the concurrent Student release. We will be doing frequent periodic releases as we update this functionality.

Known issues


Module Overview


item-scoring-engine contains interfaces which are implemented by the other modules.


item-scoring-engine contains scoring logic as well as workers.


item-scoring-service contains standalone web services to use item-scoring-engine.


item-scoring-student-simulator simulates the student site as a thin client.


qtiscoringengine contains QTI scorer module.

Equation Scoring Service Setup

The Equation (EQ) Scorer is provided as a web service. In order to run this, perform the following steps:

  1. On the TDS (student) server, install Python 2.7, Sympy 0.7.1, and Bottle 0.12.8.
  2. For security reasons, we recommend creating a user with non-root privileges. Name it, for example, itemscoringservice. Switch to this user.
  3. Create a directory for the EQ service such as eq/scripts/
  4. Create a directory for the EQ service logs such as eq/logs/
  5. Install sympy-scripts/ into that user's ~itemscoringservice/eq/scripts for example.
  6. Start the service as the itemscoringservice user using the following command: /usr/bin/python2.7 /home/itemscoringservice/eq/scripts/ 2> /dev/null > /home/itemscoringservice/eq/logs/ &
  7. This will ensure the equation scorer runs in the background and saves its log output.
  8. It's recommended to make sure only a single instance of the EQ scorer is running at any one time, and that the logs directory is rotated and pruned regularly.


In general, build the code and deploy the JAR file.

Build order

If building all components from scratch the following build order is needed:

  • shared-common
  • shared-xml
  • shared-web
  • scoring-load-test-automation
  • shared-threading


ItemScoring has a number of direct dependencies that are necessary for it to function. These dependencies are already built into the Maven POM files.

Compile Time Dependencies

  • shared-common
  • shared-xml
  • shared-web
  • scoring-load-test-automation
  • shared-threading
  • jaxb-osgi
  • spring-context
  • jcl-over-slf4j
  • slf4j-api
  • slf4j-log4j12
  • log4j
  • spring-jdbc
  • spring-webmvc
  • spring-faces
  • myfaces-impl
  • jstl
  • el-api
  • el-impl
  • jaxen

Runtime Dependency


Test Dependencies

  • shared-test
  • mockito-core
  • junit
  • spring-test