Skip to content

Commit

Permalink
Add concept map documentation (#449)
Browse files Browse the repository at this point in the history
  • Loading branch information
neenjaw authored Jul 29, 2023
1 parent 75528d9 commit dfe837b
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 1 deletion.
7 changes: 7 additions & 0 deletions building/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,13 @@
"title": "Concepts",
"blurb": ""
},
{
"uuid": "0807db01-ce0e-4ac4-817b-7fe0a2366d01",
"slug": "tracks/concept-map",
"path": "building/tracks/concept-map.md",
"title": "Concept Map",
"blurb": ""
},
{
"uuid": "2a29f722-e70d-4679-81f8-bd6727fa9013",
"slug": "tracks/config-json",
Expand Down
3 changes: 3 additions & 0 deletions building/tracks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ The track's configuration and metadata are specified in the `config.json` file.
All concept and practices exercises of a track involve _concepts_. These concepts are separate entities by themselves. Check the [documentation](/docs/building/tracks/concepts) for more information.

The concepts taught in the track's concept exercises form a _syllabus_.
The _syllabus_ is shown to students as a _concept map_.
Check the [_concept map_ documentation](/docs/building/tracks/concept-map) to learn about building out the concept map for a _syllabus_.

For more information on how to design a syllabus, check the [syllabus documentation](/docs/building/tracks/syllabus).

## Exercises
Expand Down
48 changes: 48 additions & 0 deletions building/tracks/concept-map.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Concept Map

The concept map is one of the main methods to illustrate the progression that a student takes through the concept exercises.

## Design Goals

- Provide a meaningful concept map of ideas from simple to complex ideas.
- Provide a pathway towards fluency in a language.
- Illustrate the progression through the course contents.

## Structure

- Nodes
- Each concept is represented by a node on the concept map.
- Provide a quick reference with their style to indicate the degree of progression.
- Mastered: Concepts whose learning exercise and all associate practice exercise is complete.
- Complete: Concepts whose learning exercise is complete, but one or more practice exercise is not complete.
- Available: Concepts whose learning exercise has not been completed.
- Locked: Concepts whose learning exercise requires one or more pre-requisite exercise to be completed.
- Paths
- Provide a relation of one concept to the next.
- Provide a relation indicating the building blocks of a concept back to the root.

## Configuration

The configuration of the concept map is determined by details of the [`config.json`](/docs/building/tracks/config-json) associated to a track.
Specifically the specification of the concept exercises determines the shape and layout of the concept map.

> You can view the code used to compute the concept map specification on GitHub: [Exercism/website: determine_concept_map_layout.rb][github-concept-code]
A concept exercise specifies its prerequites and also the concept it teaches on completion.
If we translate this to the terms of a [graph][wikipedia-graph]:
- A concept represents a _vertex_ (also known as a _node_)
- A concept exercise determines one or more _directed edges_ between two _vertices_ (_nodes_)

It is important to note, not all edges that could be specified from the `config.json` appear in the result -- only the edges from the preceeding level are selected.

```mermaid
flowchart TD
Basics --> Integers
Integers --> Strings
Basics --Edge Removed--> Strings
linkStyle 2 stroke-width:2px,fill:none,stroke:red;
```

[github-concept-code]: https://github.com/exercism/website/blob/main/app/commands/track/determine_concept_map_layout.rb
[wikipedia-graph]: https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
4 changes: 3 additions & 1 deletion building/tracks/concepts.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Concepts

Concepts are the things that a programmer would need to understand to be fluent in a language. Concepts are taught by Concept Exercises and are used as prerequisites for Concept- _and_ Practice Exercises.
Concepts are the things that a programmer would need to understand to be fluent in a language.
Concepts are taught by Concept Exercises and are used as prerequisites for Concept- _and_ Practice Exercises.
Concepts are placed on to a [_concept map_](/docs/building/tracks/concept-map) when displayed to the student.

## Metadata

Expand Down

0 comments on commit dfe837b

Please sign in to comment.