Structure de contenu Progression

Définitions :

Catégorie :

Une catégorie est une collection de de sous-catégories ou d’exercices liés à une compétence. La catégorie peut couvrir un cours ou une section d’un cours. L’étudiant qui complète une catégorie devrait être confiant d’avoir acquis une compétence ou une partie d’une compétence.

Question :

La question est un exercice unique, validé par une série de tests.

Test :

Chacune des validations effectuées pour prouver que l’étudiant a répondu correctement à la question.

Structure des catégories :

La structure des catégories est données par l’arborescence de répertoires qui les contiennent. Une catégories contient un sous-répertoire par sous-catégorie et la sous-catégorie terminale contient un sous-répertoire par question. Pour décrire la catégorie, sous-catégorie ou la question, un fichier info.yml doit être présent dans la racine de chaque répertoire.

catégorie/
|_info.yml
|_sous-catégorie_1/
| |_info.yml
| |_question1/
| | |_info.yml
| | |_question.py
| | |_tests/
| |   |_tous_les_cas.yml
| |
| |_question2/
|   |_info.yml
|   |_question.py
|   |_tests/
|     |_cas1.yml
|     |_cas2.yml
| 
|_sous-catégorie_2/
  |_info.yml
  |_question1/
  | |_info.yml
  | |_Question.java
  | |_tests/
  |   |_cas1.yml
  |   |_cas2.yml
  |
  |_question2/
  |_question3/

Composition des fichiers

Composantes d’une catégorie

  • un fichier info.yml comportant les attributs suivants :
    • titre : le titre de la série
    • description : description courte de la série
    • catégories : liste des répertoires contenant une sous-catégorie
    • questions : liste des répertoires contenant une question
  • un sous-répertoire par question

Composantes d’une question

  • un fichier info.yml comportant les attributs suivants :
    • type : «prog|sys|bd», le type de question (programmation, administration système ou base de données).
    • titre : le titre de la question
    • description : description courte de la question
    • énoncé : énoncé de la question (en format Markdown)
    • execs : liste de descriptifs des programmes exécutables. Chaque élément contenant les attributs suivants :
      • langage : langage de programmation
      • fichier: le fichier contenant l’ébauche de programme
    • feedback+ : rétroaction positive générale (facultatif, en format Markdown)1
    • feedback- : rétroaction négative générale (facultatif, en format Markdown)
    • feedback! : rétroaction d’erreur générale (facultatif, en format Markdown)
    • tests : liste des fichiers de tests

Questions Prog:

Le fichier d’ébauche de programme

Pour chaque langage pris en charge par la question, un fichier de départ doit être fourni. Le programme entier doit résider dans ce seul fichier (pas d’import/include possible autre que ceux des librairies standard); c’est ce fichier qui sera exécuté.

En commentaire (quelque soit le style de commentaire du langage utilisé), les balises suivantes peuvent être utilisées pour contrôler l’affichage et la modification du code par l’étudiant :

  • parties visibles (entre +VISIBLE et -VISIBLE) : ces sections seront visibles par l’étudiant.
    • De la première ligne et jusqu’à la première balise -VISIBLE, le code de l’ébauche est visible.
    • À partir de la dernière balise +VISIBLE et jusqu’à la fin de l’ébauche, elle est visible.
  • parties éditables (entre +TODO et -TODO) : ces sections seront modifiables par l’étudiant.
    • Au moins une balise +TODO est obligatoire.
    • De la première ligne et jusqu’à la première balise +TODO, l’ébauche est non éditable
    • À partir de la dernière balise +TODO et jusqu’à la fin de l’ébauche, elle est éditable

Tout ce qui se trouve hors des sections VISIBLE sera invisible à l’étudiant (et donc immuable) mais sera tout de même exécuté normalement.

fichiers de tests

Les fichiers de tests sont dans le format yaml et comportent une ou plusieurs sections correspondant chacune à un test effectué. Les sections sont séparées par trois tirets (—) et elles contiennent les attributs suivants :

  • nom : nom du test
  • in : les entrées textuelles passés directement à l’entrée standard du programme
  • out : les sorties textuelles attendues sur la sortie standard du programme
  • feedback+ : rétroaction positive spécifique à la question (facultatif, en format Markdown)1
  • feedback- : rétroaction négative spécifique à la question (facultatif, en format Markdown)
  • feedback! : rétroaction d’erreur spécifique à la question (facultatif, en format Markdown)

Exemple

ERROR empty list

Notes de bas de page:

1

Certains symboles on une signification particulière en YAML ou en markdown. Le format YAML ayant préséance, pour les utiliser en markdown, utilisez les caractères d’échappement, les guillemets ou le format yaml «bloc» :

Incorrect :

feedback+: *Ceci est en gras*

Correct :
  - feedback+: \*Ceci est en gras*
  - feedback+: "*Ceci est en gras*"
  - feedback+: >
      *Ceci est en gras*