# Detection of mathematical skills

Many math problems require students to apply a sequence of steps related to mathematical skills. Examples of such skills are factoring expressions or differentiating using the chain rule. Some learning applications can use such information to provide teachers insight into a student's (lack of) mathematical skills or to update an adaptive learning progression.

Being a system for step-by-step problem solving, Algebrakit can automatically collect positive and negative proof of the student's mastery of mathematical skills. A solved math problem establishes positive proof of mastery of the associated skills. Algebrakit finds these associated skills using its educational math engine to solve the problem. A student failing to solve a problem is negative proof of mastery. In that case, Algebrakit determines the skill of the next mathematical step that the student most likely could not perform. Errors the student made and that Algebrakit could identify through its automatic error detection is also a negative proof of mastery.

When students work on questions, Algebrakit stores information about mathematical skills in the corresponding sessions. You can obtain this information from the API using Get Score. Each skill has a unique ID referring 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.

## Taxonomy of skills

The skill taxonomy is a hierarchical overview of the mathematical skills that Algebrakit recognizes. 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>
``````