Mechanical Tutor

Open Bugs: 
Development Status: 
Seeking co-maintainer(s)
Under active development

The Mechanical Tutor module provides means for building, presenting and evaluating script-generated questions.

What does the module do?

For end users (learners)

Mechanical Tutor allows you to practice exercises of a certain type, such as adding fractions or learning German words for days and months. The questions may vary slightly (different numbers or week days/months) but they only vary within a set pattern. The questions will never end, so you can practice until you feel that you have mastered this type of question. Both you and your teacher can

track your progress.

For end users (teachers)

Mechanical Tutor is a tool for making it easier and hopefully more fun/interesting to work with repetitive exercises. Teachers select questions they want students to work on, and can follow their progress. The project is only intended as a tool for questions that can be easily standardized to a pattern, which is far from everything, but in these cases Mechanical Tutor allows combining a never-ending list of exercises with continuous evaluation.

For site builders

Mechanical Tutor provides script-generated questions, which can be embedded as a field on nodes and other entities. The questions are submitted and automatically evaluated. You can use modules like Views and Rules to display statistics for individual questions, students or classes. The actual questions are plugins written in code, not built by configuration.

For coders/developers

Mechanical tutor is a framework for script-generated questions. Each question is varied by using a set of parameters, for example "A + B = ?" would use the parameters A and B. Each question is represented by its own class, used for generating the parameters, building the question and evaluating the submitted answer. The project is built with math questions in mind, and provides tools for drawing graphs and evaluating equation patterns.

Similar projects

This module is inspired by Khan Academy (, and is intended to complement (but not replace!) Khan Academy as it is used in some classrooms. (The project maintainer is a math teacher.)

There is a somewhat simular module called Closed Question, allowing editors/site builders to set up scripted questions. The Mechanical Tutor module allows more flexibility for coders, but is not suitable if you want site users to be able to extend the library of questions by on-site configuration.

How to use

  1. Download this project.
  2. If you want to use the included example questions, download the "matheval" library and place it in the folder sites/all/libraries/matheval. This should result in a file at sites/all/libraries/matheval/matheval.class.php. You can find the library at (note the name flip).
  3. Enable the Tutor examples module and the Tutor field module, and all their dependencies.
  4. Add a "Tutor question" field to an entity of your choice (say, node).
  5. Create a new entity of the relevant bundle. Select which question type you want to display. (A few example question types are provided by the Tutor example module.)
  6. View the node: You get a question and an answer box. Question is repeated until you answer correctly. Then a new question is generated.

About the Tutor statistics module/feature

This module provides a new content type for Tutor questions, and also a new entity type used for keeping track of streaks of correct answers. There is a view attached as a field to the exercise nodes showing these statistics to the end user.

How to create new scripted questions

See the README for a guide.


Ideas, questions, code, bug reports and what not are welcome! Check out the issue queue (links in the sidebar).

Release Dates: