Skip to main content

Practice mode skills tree structure

Represents the hierarchical structure of educational grades, domains, standards, and skills.

*Domains are later internally called as categories and standards are described as subcategories

Example of a Tree (using K.OA.A.1) for:

K.OA.A.1 Coherence Map - https://tools.achievethecore.org/coherence-map/K/44/487

Root
└── Grade Level - K
├── Category - OA
│ ├── Subcategory - A
│ │ └── Skill - 1
| | └── Skill
│ └── Subcategory
└── Category

Detailed Structure:

  • Root: The top level in the hierarchy, representing the overall structure.
  • Grade: Represents the educational grade (e.g., Kindergarten).
  • Category: A broad category within the grade level (e.g., Operations and Algebraic Thinking). (previously called 'Domain')
  • Subcategory: A group of related standards within a category (e.g., Addition and Subtraction). (previously called 'Standard')
  • Skill: The most specific level, detailing individual learning objectives (e.g., K.OA.A.1).

Key properties:

⚠️
You cannot rely on the below fields such as type for example.
It contains valid information but do not use it for checks on the frontend.
It would be best if you relied only on the tree structure.

  • _id: Unique identifier for the node.
  • type: Type of the node (e.g., 'root', 'grade', 'category', 'subcategory').
  • parents: Parent references (if applicable).
  • skills: Associated skills (if applicable).
  • originalPath: Path identifier in the hierarchy.
  • order: Position/order of the element.
  • nameTranslations: Translated names.
  • descriptionTranslations: Translated descriptions.
  • attributes: Optional metadata like grade level.
  • children: Hierarchical child elements.

Example Data:

const treeRoot: PracticeTree = {
_id: '65df28b27395528baa11e7a1',
type: 'root',
parents: [],
skills: [],
originalPath: 'CCSS.MATH.CONTENT',
order: 1,
nameTranslations: 'MathContent',
descriptionTranslations: 'MathContent',
children: [
{
// Grade level
_id: '65df2c0b7395528baa11e7a9',
type: 'grade',
parents: ['65df28b27395528baa11e7a1'], // ID of the root
skills: [],
originalPath: '',
order: 1,
nameTranslations: 'Kindergarten',
descriptionTranslations: 'Kindergarten',
attributes: { grade: 0 },
children: [
{
// Category level
_id: '65df2c0b7395528baa11e7ae',
type: 'category', // previously: 'domain'
parents: ['65df2c0b7395528baa11e7a9'],
skills: [],
originalPath: 'CSS.MATH.CONTENT.K.CC',
order: 2,
nameTranslations: 'Counting & Cardinality',
descriptionTranslations: 'Counting & Cardinality',
children: [
{
// Subcategory level
_id: '65df2c0b7395528baa11e7b3',
rootId: '65df28b27395528baa11e7a1',
type: 'subcategory', // previously: 'standard'
parents: ['65df2c0b7395528baa11e7ae'],
originalPath: 'K.CC.A.1',
order: 2,
nameTranslations: 'K.CC.A.1',
descriptionTranslations: 'Count to 100 by ones and by tens.',
children: [],
skills: [
{
_id: '65df2c0a7395528baa11e7a3',
order: 1,
nameTranslations: 'Count upwards by 1',
descriptionTranslations: 'Count upwards by 1',
ability: {
functionName: 'count_upwards_by_1',
problemCount: 5,
visiblity: [
{ languageCode: 'en-SE', visible: true },
{ languageCode: 'sv-SE', visible: true },
],
},
theory: [
{ languageCode: 'en-SE', theory: '66a25ea570f66576afe67009' },
{ languageCode: 'sv-SE', theory: '66a25ea570f66576afe67009' },
],
},
],
},
],
},
],
},
],
}