# Detection of mathematical skills

Many math problems require the student to apply a sequence of steps, that each relate to a certain mathematical skill. Examples of such skills are expanding brackets or applying the chain rule correctly. Some learning applications are able to use such information to provide a teacher insight into a student's (lack of) mathematical skills or to update an adaptive learning progression.

Being a system that is designed around step by step problem solving, AlgebraKiT is able to automatically collect positive and negative proof of the student's mastery of mathematical skills. Positive proof of mastery is generated when a student solves a math problem. AlgebraKiT uses its educational math engine to detect which skills are required to solve the problem. Negative proof of mastery is generated when a student makes a mistake that is recognized by AlgebraKiT's automatic error detection. Negative proof is also generates when a student fails to solve a problem. In that case, AlgebraKiT identifies the skill that is related to the next mathematical step that the student most likely was unable to perform.

When a student works on a question, the information about mathematical skills are stored in the corresponding Session. This information can be retrieved from the API using Get Score. Each skill is identified by a unique ID that refers to the skill taxonomy described below. A numerical 'weight' denotes how strong the proof for that skill is and whether the proof is positive or negative. A weight of 100 is the maximum proof that a student masters the skill and a weight of -100 is the maximum proof that the student does not master the skill.

## Taxonomy of skills

The skill taxonomy is a hierarchical overview of the mathematical skills that are recognized by AlgebraKiT. The structure of the taxonomy is as follows:

```
<TagCollection> = {
id: <string>
descr: <I18NDescription>
tags?: <Tag>[]
collections?: <TagCollection>[]
}
<Tag> = {
id: <string>
descr: <I18NDescription>
errors: <ErrorTag>[]
}
<ErrorTag> = {
id: <string>
type: <ErrorType>[]
descr: <I18NDescription>;
}
<I18NDescription> = a map of locale id to <string>
```

The taxonomy can be downloaded as a JSON file here: skill-taxonomy.json