# Njoror: Learn by following your curiosity.

Njoror aims to change the way we learn mathematics. It replaces the standardized boring lectures and heavy textbooks with interactive problems tailored specifically for the individual student following their own unique learning path.

I have been working on a project for a while. It aims to change the way we learn mathematics. It replaces the standardized boring lectures and heavy textbooks with interactive problems tailored specifically for the individual student following their own unique learning path.

Itâ€™s currently in early access. You can sign up for early access.

## How it works

Njoror Core consists broadly of 3 components. The concept graph, student proficiency model, and dynamic problems. There are many more components such as classrooms, wikis, and communities, but these are supporting the core.

**Concept graph**

The concept graph defines how all the different concepts relate to each other. What dependencies they have, what they lead to, which concepts have which memberships and so on. This is the core of the platform as it encodes everything we need to know about mathematics to dynamically create learning plans.

**Student proficiency model**

To teach effectively, we need to teach things that are relevant to the student. For that, we need to know where they are, so we can meet them where they are at. This is the job of the student proficiency model. It works closely with the concept graph, and tracks student activity related to different concepts and estimates the student ability in that concept.

Moreover, the student proficiency model uses the knowledge of the relationships between the concepts to propagate "learning". So for example, if you're good at multivariate calculus, it knows that you're probably also good at addition without having to explicitly practice addition. This propagation also works for more subtle interactions.

**Problem author**

Perhaps the most involved module from a computer science perspective is the dynamic problem author. It implements a custom domain specific language with syntax closer to mathematics than can be achieved in Python, and a corresponding UI to write the language to define problem templates which can be used to an unlimited number of problem instances.