A track consists of many different parts.
The track's configuration and metadata are specified in the config.json
file. It lists the track's exercises, concepts, editor settings, and much more. Checkout the config.json documentation.
All concept and practices exercises of a track involve concepts. These concepts are separate entities by themselves. Check the documentation 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 to learn about building out the concept map for a syllabus.
For more information on how to design a syllabus, check the syllabus documentation.
Tracks have two types of exercises:
Each exercise has an optional Dig Deeper section that can contain:
Some files are not specific to individual exercises, but are instead applicable to all exercises. Check the documentation for more information.
Each track has a couple of required documentation files. Check the documentation for more information.
Some parts of the track can be displayed in widgets.
All documents should adhere to the style guide. Markdown documents should also adhere to our Markdown standards.
csharp ├── config | ├── exercise_readme.go.tmpl | └── maintainers.json ├── docs | ├── ABOUT.md | ├── INSTALLATION.md | ├── LEARNING.md | ├── RESOURCES.md | └── TESTS.md ├── concepts | └── numbers | ├── about.md | ├── introduction.md | └── links.json └── exercises | ├── concept | | └── cars-assemble | | ├── .docs | | | ├── hints.md | | | ├── introduction.md | | | └── instructions.md | | ├── .meta | | | ├── config.json | | | ├── design.md | | | └── Exemplar.cs (track-specific) | | ├── CarsAssemble.cs (track-specific) | | ├── CarsAssemble.csproj (track-specific) | | └── CarsAssembleTests.cs (track-specific) | ├── practice | | └── leap | | └── .docs | | | └── instructions.md | | └── .meta | | | ├── config.json | | | └── Example.cs (track-specific) | | ├── Leap.cs (track-specific) | | ├── Leap.csproj (track-specific) | | └── LeapTests.cs (track-specific) | └── shared | └── .docs | ├── debug.md | ├── help.md | └── tests.md └── config.json
Each track is (automatically) assigned a maintenance category, which determines the track maintainer's GitHub repo permissions.
When you merge a track PR that touches an exercise, it triggers all the latest published iteration of students' solutions to be re-tested. For popular exercises, this is a very expensive operation (70,000 test runs for Python Hello World as an extreme!).
We encourage you to try and avoid doing this unnecessarily.
Solutions will not be retested if the merged commit either:
.docs
or .meta
files, or other files that users don't interact with[no important files changed]
in the commit body.Solutions will be re-tested if the merged commit both:
[no important files changed]
in the commit body.meta/config.json
file):
Some examples:
[no important files changed]
added, so no tests were run