La connexion SSH n'est actuelle disponible que depuis une petite partie du reseau interne U-PSud. Utilisez de préférence les adresses de dépots en HTTPS pour le moment.

fiches.md 6.98 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
# Rédaction des fiches de TD et TP

## Renouveler les fiches: en quoi cela consiste?

- Rechercher dans les sources des fiches de TD et TP si nous nous
  étions mis des choses à faire ("TODO"); si oui les traiter dans la
  mesure du possible;

- Lorsqu'elles manquent, rajouter des solutions (voir ci-dessous)

- Relire les fiches de TD et TP (dont les feuilles Jupyter) pour toute
Adeline Pierrot's avatar
Adeline Pierrot committed
12 13
  typo. Que ce soit pour les fiches TD et TP ou pour les fiches Jupyter,
  relire aussi bien la version étudiants que la version enseignants pour éviter les bugs.
14

15 16 17 18 19 20 21
- Avant d'envoyer l'énoncé de TD à la reprographie, vérifier comment
  tombent les sauts de pages dans le PDF, et ajuster le cas échéant en
  jouant avec `\clearpage`, `\enlargethispage{2cm}`, `\bigskip`, etc.
  En particulier, si le PDF déborde un peu d'un nombre paire de pages,
  cela vaut le coup d'y passer un peu de temps pour gagner la page de
  débordement. Une feuille de plus dans le sujet, c'est une ramette de
  400 feuilles de consommée!
22

23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
- Et puis les idées d'améliorations sont bienvenues!

## Timing

- En début de la semaine précédente: contacter Nicolas et le relecteur
  pour confirmer que l'on est dessus.

- Faire le maximum;

- Venir en amphi le jeudi;

- Voir à la fin de l'amphi avec Nicolas pour les points éventuels qui
  nécessitent discussion;

- Finir la fiche de TD jeudi soir pour relecture vendredi matin tôt et
  envoi à la repro dans la foulée (autant que possible);

- Finir la fiche de TP dimanche pour relecture lundi.

## Rédaction des solutions

Les solutions s'écrivent dans les sources TD.tex ou TP.tex dans un
environnement \begin{correction} \end{correction}. S'il s'agit de
code, il doit être importé depuis un fichier .cpp qui doit être
compilé et testé au préalable, et indenté suivant les conventions du
Adeline Pierrot's avatar
Adeline Pierrot committed
48 49
cours (voir [conventions-codage.md]()). Il est possible et même recommandé
d'utiliser les mêmes fichiers .cpp pour le sujet et la solution, en
50 51 52 53 54 55 56 57 58 59 60 61
annotant les parties à cacher dans le sujet avec:

    ///Correction
    ...
    ///FinCorrection

Même chose dans les feuilles Jupyter avec:

    /// BEGIN SOLUTION
    ...
    /// FIN SOLUTION

62 63
(/// non requis dans les cellules de texte)

64
Cette dernière syntaxe est celle utilisée par l'outil de correction
65
automatique nbgrader; en 2019, on uniformisera tout vers cette
66 67 68 69 70
syntaxe.

Voir les solutions déjà faites pour des exemples.

Un fichier qui n'a pas vocation à être dans l'archive fournie aux
71 72
étudiants (typiquement une solution) doit être signalé par un nom de
fichier en `*-correction.*`.
73

74
## Utilisation de nbgrader
75 76 77 78 79 80 81

[nbgrader](https://nbgrader.readthedocs.io/) est un outil pour
(partiellement) automatiser la collection et la correction de feuilles
Jupyter. Le modèle est très simple: on marque certaines cellules comme
contenant des tests; si elles déclenchent une erreur, des points sont
enlevés.

Nicolas Thiéry's avatar
Nicolas Thiéry committed
82
Cette année nous élargissons la mise en place de nbgrader. Il sera
83 84 85 86
probablement trop tôt pour l'utiliser systématiquement. Mais les
chargés de TP pourront se servir des fiches rendues et des notes
calculées comme d'indications pour l'attribution des notes de TP.

87 88 89 90 91 92 93 94
### Rédaction des fiches

Tout d'abord, il est recommandé de travailler dans l'environnement
info-111 en suivant le [tuto d'installation](logiciels/jupyter-installation.md)
et en se plaçant dans l'environnement info-111 avec la commande :

        source activate info-111

95 96
Vous pouvez aussi travailler sur le [serveur JupyterHub](http://jupytercloud.lal.in2p3.fr/).

97 98 99
Lancer Jupyter, naviguer dans le sous-dossier de la semaine correspondante,
et ouvrir la feuille à éditer. Si nbgrader est déjà activé, vous verrez un
menu déroulant à droite de chaque cellule. Si ce n'est pas le cas, aller dans
100
`Affichage -> Barre d'outil de cellule -> Create Assignment` ce qui fera apparaître
101
le menu déroulant. Celui-ci permet de spécifier la nature des cellules, d'en modifier
102
les propriétés. Il y a six catégories de cellules :
103

104
-  Les cellules de *texte énoncé* : elles sont à passer en `read-only` pour éviter que les étudiants ne modifient l'énoncé;
105

106
-  Les cellules de *code énoncé* : ce sont les cellules d'exemples de code que l'on ne veut pas voir modifiées par les étudiants, à mettre en `read-only` également;
107

108 109 110 111 112 113
-  Les cellules de *question en français* : ce sont les cellules de
   texte qui nécessitent une réponse écrite de la part des étudiants.
   Elles sont à mettre en mode `Manually graded answer` (mettre 1
   point à la question dans le doute). La solution à la question est à
   mettre entre des balises "`BEGIN SOLUTION`" et "`END SOLUTION`",
   chacune sur sa ligne;
114

115 116 117 118 119 120
-  Les cellules de *question de code* : ce sont les cellules qui
   doivent être complétées par les étudiants par du code. Elles sont à
   mettre en mode `Autograded answer`. Mettre la solution entre
   balises "`/// BEGIN SOLUTION`" et "`/// END SOLUTION`"; on peut
   fournir aux étudiants un squelette à trous en ne mettant que
   certaines parties entre ces balises.
121

122
-  Les cellules de *tests* : ce sont les cellules qui vérifient que
Teo's avatar
Teo committed
123
   les solutions des étudiants donnent de bons résultats en utilisant
124 125 126 127 128 129
   `ASSERT`. La cellule est à mettre en mode `Autograder tests`
   (mettre 1 point à la question dans le doute). On peut rajouter des
   tests qui seront cachés aux étudiants mais qui compteront dans la
   correction automatique, entre des balises "`// BEGIN HIDDEN TESTS`"
   et "`// END HIDDEN TESTS`". Mettre préférablement chaque ASSERT
   dans une cellule séparée.
130

131
-  Les cellules *libres* : typiquement, ce sont des cellules pour que les étudiants puissent tester leurs fonctions et donc ils doivent pouvoir les modifier. Ces cellules sont à laisser en mode "`-`".
132 133 134

Pour un exemple de ces 6 catégories, voir la feuille 1 du TP 4.

135 136
Pour plus de détails, voir aussi la [documentation de nbgrader](https://nbgrader.readthedocs.io/en/stable/user_guide/creating_and_grading_assignments.html#developing-assignments-with-the-assignment-toolbar)

137 138 139 140
### Relecture et version étudiant

Avant de continuer, s'assurer que la feuille contenant la correction fonctionne bien, par exemple en redémarrant le kernel et en faisant `Cellule->Exécuter tout`.

141 142 143 144 145 146 147
Si tout marche bien, il est temps de vérifier que la version que
recevront les étudiants est correcte. Pour se faire, se placer dans le
dossier Info111 du dépôt git (toujours dans l'environnement de
développement `info-111`), et exécuter la commande suivante (à adapter
en fonction de la semaine):

        nbgrader assign --create --force Semaine4
148

149
Une fois la commande exécutée, naviguer dans le dossier `_build/Semaine4` : vous devriez y trouver les versions destinées aux étudiants des feuilles Jupyter. Vérifier ces feuilles (notamment que les solutions sont bien retirées) dans Jupyter.
150

151 152 153 154
Lorsque les modifications sont terminées, enregistrez et poussez sur
le dépôt git les feuilles version «enseignant» qui sont dans le
dossier `Semaine4`. La version «étudiants» sera générée
automatiquement lors de la création de l'archive `.zip` de la semaine.