Construis des parcours


Un parcours se compose de nombreuses parties différentes.

Métadonnées

La configuration et les métadonnées du parcours sont spécifiées dans le fichier config.json. Il répertorie les exercices du parcours, ses concepts, les paramètres de l'éditeur et bien d'autres choses encore. Consulte la documentation de config.json.

Concepts

Tous les exercices d'apprentissage et d'entraînement d'un parcours font intervenir des concepts. Ces concepts sont des entités à part entière. Consulte la documentation pour plus d'informations.

Les concepts enseignés dans les exercices d'apprentissage d'un parcours forment un programme. Le programme est présenté aux apprenants sous la forme d'une carte conceptuelle. Consulte la documentation de la carte conceptuelle pour apprendre à construire la carte conceptuelle d'un programme.

Pour plus d'informations sur la façon de concevoir un programme, consulte la documentation du programme.

Exercices

Les parcours proposent deux types d'exercices :

  • Exercices d'apprentissage : ils sont conçus pour enseigner un ou plusieurs concepts à un apprenant. Consulte la documentation pour plus d'informations.
  • Exercices d'entraînement : ils sont conçus pour mettre en pratique les concepts appris. Consulte la documentation pour plus d'informations.

Creuse plus loin

Chaque exercice possède une section Creuse plus loin facultative, qui peut contenir :

  • Approches : différentes façons de résoudre l'exercice
  • Articles : décrivent des aspects intéressants de l'exercice
  • Vidéos de la communauté : des vidéos qui présentent l'exercice, généralement en montrant quelqu'un qui le résout de zéro

Fichiers partagés

Certains fichiers ne sont pas propres à un exercice en particulier, mais s'appliquent à tous les exercices. Consulte la documentation pour plus d'informations.

Documentation

Chaque parcours possède quelques fichiers de documentation obligatoires. Consulte la documentation pour plus d'informations.

Widgets

Certaines parties du parcours peuvent être affichées dans des widgets.

Guide de style

Tous les documents doivent respecter le guide de style. Les documents Markdown doivent également respecter nos normes Markdown.

Exemple

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

Maintenance

Permissions du dépôt

Chaque parcours se voit attribuer (automatiquement) une catégorie de maintenance, qui détermine les permissions GitHub du dépôt du mainteneur du parcours.

Évite de déclencher des exécutions de tests inutiles

Quand tu fusionnes une PR de parcours qui touche à un exercice, cela déclenche le re-test de toutes les dernières itérations publiées des solutions des apprenants. Pour les exercices populaires, c'est une opération très coûteuse (70 000 exécutions de tests pour le Hello World de Python, dans le cas extrême !).

On t'encourage à essayer d'éviter de le faire sans nécessité.

Les solutions ne seront pas re-testées si le commit fusionné fait l'une des choses suivantes :

  • il ne touche qu'aux fichiers .docs ou .meta, ou à d'autres fichiers avec lesquels les utilisateurs n'interagissent pas
  • ou il contient [no important files changed] dans le corps du commit.

Les solutions seront re-testées si le commit fusionné à la fois :

  • ne contient pas [no important files changed] dans le corps du commit
  • et touche à l'un des fichiers suivants pour un exercice (comme spécifié dans son fichier .meta/config.json) :
    • les fichiers de tests
    • les fichiers de l'éditeur
    • les fichiers d'invalidation

Quelques exemples :

  • Python#3423 : ne touche qu'à la documentation, donc aucun test n'a été exécuté
  • Python#3437 : a été fusionnée avec [no important files changed] ajouté, donc aucun test n'a été exécuté
  • Csharp#2138 : des espaces ont été supprimés des tests. Le mot-clé n'a pas été ajouté. Les tests ont été réexécutés inutilement.