Skip to content

Demo 2018 W25

Erik Martin-Dorel edited this page Jul 6, 2018 · 8 revisions

learn-ocaml-editor

Link to this page: https://git.io/fYMvQ

Tutoriel/Démo du 20 juin 2018 (semaine 25)

Conception d'un exercice corrigé automatiquement

  1. Se connecter à l'URL https://pfitaxel.github.io/pfitaxel-demo/
  2. Cliquer sur Editor
  3. Créer un nouvel exercice
  4. Choisir les méta-données ("demo_1", "Démo 1", "Démonstration 1") et Valider le formulaire
  5. Remplir l'onglet Question (à droite) avec le texte de l'exercice de TP (en Markdown)
    • Vous pouvez copier-coller l'exemple de l'Annexe 1
  6. Remplir l'onglet Test.ml (à droite) avec le texte de l'évaluateur
    • Vous pouvez copier-coller l'exemple de l'Annexe 2
  7. Remplir légèrement l'onglet Prelude (à droite) avec une définition globale de variable (montrée à l'étudiant)
  8. Remplir l'onglet Solution (à gauche) avec une correction complète
  9. Cliquer sur Save puis sur Grade
  10. Le résultat de la correction-test devrait s'afficher dans l'onglet Result

Préparation d'un squelette de code

  1. Cliquer maintenant sur le bouton Gen. template
  2. Le buffer Template doit maintenant s'afficher avec un squelette de code
  3. Vous pouvez le modifier et vérifier qu'il "type-check" en cliquant sur Check

Expérimentation du point de vue étudiant

  1. Cliquer sur le bouton Export situé en haut (ce bouton devrait en fait s'appeler Experiment)
  2. On voit alors l'énoncé de l'exercice avec une mise en forme riche
  3. La réponse de l'étudiant doit être faite à gauche (appuyer sur Ctrl+L pour voir ?)
  4. Un buffer Toplevel est disponible pour faire des tests, regarder le type de fonctions, etc.
  5. Cliquer sur Check (vérification de syntaxe et de typage)
  6. Cliquer sur Grade
  7. Le résultat de la correction devrait s'afficher dans l'onglet Result

Exercice pour l'enseignant

  1. Choisir une spécification de fonction (à base d'entiers ou de listes)
  2. Compléter les 3 fichiers nécessaires (Question, Test.ml et Solution) dans le même l'exercice demo_1
  3. Tester le sujet.

Annexe 1

# Démo 1

## Question 1.

Écrivez la fonction suivante :

    xor : bool -> bool -> bool

correspondant au **OU EXCLUSIF**.

*Remarque :* Vous pouvez fournir une fonction ayant un profil plus général.

## Question 2.

Écrivez la fonction suivante :

    power : int -> int -> int
    
correspondant à l'exponentiation.

*Remarque :* `power m n` lèvera une exception (`failwith`) si `n < 0`.

Annexe 2

open Test_lib
open Report

let () =
  set_result @@
  ast_sanity_check code_ast @@ fun () ->
  [ Section
      ([ Text "Fonction:" ; Code "xor" ],
       test_function_2_against_solution ~gen:0
         [%ty : bool -> bool -> bool ] "xor"
         [ (true, true) ; (true, false) ; (false, true); (false, false) ]) ;
    Section
      ([ Text "Fonction:" ; Code "power" ],
       test_function_2_against_solution ~gen:4
         [%ty : int -> int -> int ] "power"
         []
      )
  ]

Voir aussi