diff --git a/README.rst b/README.rst
index 93f73880cc07451804926e47397f68ad8d2fee11..a1805818532bbccc34bfebb7a04cdd4f6d843f43 100644
--- a/README.rst
+++ b/README.rst
@@ -3,18 +3,10 @@ Pour le moment, la plateforme d'exercices interactifs pour `WIMS
 l'enseignement de l'informatique. L'objectif de ce dépôt est de
 développer collaborativement de nouveaux modules.
 
-Le module `U2~coding~oefprogramC.fr/`_ contient un dérivé du module
-éponyme déjà existant dans WIMS, avec quelques menues améliorations.
+Modules:
 
-Le module `test~coding~readingCppPrograms.fr/`_ présente à l'étudiant
-des programmes qu'il doit lire et comprendre, afin de deviner quelle
-sera la sortie, ou bien l'entrée appropriée pour obtenir 42. Les
-programmes sont tirés d'une collection de programmes groupés par
-thèmes. Contribuer un nouveau programme est simple: il suffit de
-l'ajouter dans le répertoire idoine. Voir
-`test~coding~readingCppPrograms.fr/README`_. Pour l'instant, la
-collection est constituée d'exercices de C++, donnés dans le cadre des
-cours d'introduction à l'informatique `Info 111
-<Nicolas.Thiery.name>`_ et Info 121 de la licence MPI de l'Université
-Paris Sud, mais l'infrastructure est conçue pour être généralisable à
-d'autres langages de programmation.
+- `U2~coding~oefprogramC.fr/`_: un dérivé du module éponyme déjà
+  existant dans WIMS, avec quelques menues améliorations.
+
+- `Compréhension de programmes C++ <test~coding~readingCppPrograms.fr/>`_:
+  deviner l'entrée ou la sortie d'un programme
diff --git a/TODO b/TODO
index 08df1f5fc0ef64090b601e84998addab5bdc2d80..a654e2f255c2a5e73d80d80401e1d5a81e093934 100644
--- a/TODO
+++ b/TODO
@@ -86,3 +86,46 @@ You don't have permission to access /wims/ on this server.
 
 
 Se créer un compte développeur
+* A propos des modules WIMS existants exécutant du code
+** Modules
+Chercher sur programmation sur le serveur
+*** U1/algo/progstring.fr
+*** ... arithmetic
+** Supporte: perl, c, pascal
+   cf. public_html/bin/c
+** Infrastructure:
+- Un type de réponse: wims/public_html/scripts/anstype/code
+  définit:
+  - comment l'utilisateur rentre la réponse
+  - comment traiter la réponse (ici exécuter le code dans un chroot)
+  - le retour: qu'est-ce qui est affiché, note, ...
+
+  Objectif: mettre à jour pour utiliser docker à la place du chroot / secure_execq
+
+  Voir aussi ~/wims.log/unsecure.
+
+  Passe par WIMS/src/Misc/wrap.c à un moment ou un autre
+** Variante: public_html/modules/tool/directexec/ (en particulier var.proc)
+
+   Outil indépendant permettant à un utilisateur d'exécuter un
+   programme quelconque écrit dans un des systèmes suivant:
+
+   outil,software, language, pari, gp, maxima, octave, macaulay, yacas, gap, scilab, c, perl, sh, python, pascal, fortran,jmol, jsgraph, canvasdraw,graphviz
+
+   entrée: une chaîne de caractère contenant le programme
+   sortie: l'affichage du programme
+
+   À confirmer: nécessitait un patch sur le noyau.
+   Utilise _calc_exec de WIMS/src/calc.c.
+   Exécute une commande, dans un chroot s'il n'est pas de confiance.
+
+   TODO: mettre à jour pour utiliser docker
+** Consommation de ressources jugées raisonnables
+   Cf. src/wimsdef.h
+   Cf. aussi wims/log/wims.conf: rlimit_cpu et
+   public_html/bases/sys/defaults.conf pour les valeurs par défaut
+** Si on se connecte avec une certaine IP alors on est en mode debug / admin
+   Affiche en particulier des informations sur l'exécution
+* si un programme est présent dans public_html/bin, il est exécutable depuis les oef.
+* Serveur WIMS de test
+  https://wimstest1.di.u-psud.fr/
diff --git a/test~coding~readingCppPrograms.fr/README b/test~coding~readingCppPrograms.fr/README
deleted file mode 100644
index 853af47d5aaa6d277e37af6434935f7b9eb6e0f3..0000000000000000000000000000000000000000
--- a/test~coding~readingCppPrograms.fr/README
+++ /dev/null
@@ -1,43 +0,0 @@
-Pour installer des exercices OEF dans un module :
-
- 1. Créer un module de type OEF
-
- 2. Pour chaque exercice, créer dans le module un nouveau fichier 
-    d'extension oef dans le répertoire src/ (exemple : src/euclide.oef). 
-    Une zone de  texte apparaît ; y écrire (ou coller) le texte source 
-    de l'exercice. Enregistrer les changements.
-
- 3. Tester le module.
-
- 4. Modifier à son goût intro.phtml et endhook.phtml,
-     et tester à nouveau.
-
-
-%%%%%% Pour utiliser directement le module sur un serveur WIMS local,
-
-1- Mettre  le template à la bonne place, 
-en changeant le nom.
-
-2. Modifier intro.phtml
-
-3. Modifier le fichier INDEX.
-
-4. Installer les fichiers sources.
-
-5. Exécuter le script $wims_home/other/bin/src2def. (Cette étape
-   doit être répétée à chaque fois que les fichiers sources sont modifiés). 
-
-
-%%%%
-
-Le répertoire data/ contient des programmes C++. Le nom des programmes
-est de la forme <theme>_nom.cpp ou <theme>_nom_input.cpp.
-
-Dans le premier cas, l'utilisateur doit deviner la sortie du
-programme. Dans le second cas, le programme doit lire un entier entre
-0 et 99 sur l'entrée standard, et l'utilisateur doit deviner lequel
-donne 42; pour l'instant il doit être unique.
-
-Mise à jour de l'exercice sur WIMS:
-
-wims.u-psud.fr -> serveur de l'université -> Accueil WIMS -> modtools -> login -> Restauration
diff --git a/test~coding~readingCppPrograms.fr/README.rst b/test~coding~readingCppPrograms.fr/README.rst
new file mode 100644
index 0000000000000000000000000000000000000000..d02b432be2e6a915398296075d25620237ad4a18
--- /dev/null
+++ b/test~coding~readingCppPrograms.fr/README.rst
@@ -0,0 +1,74 @@
+Module WIMS: Compréhension de programmes C++
+============================================
+
+Présentation
+------------
+
+Ce module présente à l'étudiant des programmes qu'il doit lire et
+comprendre, afin de deviner quelle en sera la sortie, ou bien l'entrée
+appropriée pour obtenir 42. Les programmes sont tirés aléatoirement
+d'une collection de programmes groupés par thèmes. Pour rajouter un
+nouveau programme il suffit de l'ajouter dans le répertoire
+idoine. Voir ci-dessous.
+
+Pour l'instant, la collection est constituée d'exercices de C++,
+donnés dans le cadre des cours d'introduction à l'informatique `Info
+111 <Nicolas.Thiery.name>`_ et Info 121 de la licence MPI de
+l'Université Paris Sud, mais l'infrastructure est conçue pour être
+généralisable à d'autres langages de programmation.
+
+
+Étendre le module avec de nouveaux programmes
+---------------------------------------------
+
+Le répertoire `data/`_ contient des programmes C++. Le nom des
+programmes est de la forme ``<theme>_nom.cpp`` ou ``<theme>_nom_input.cpp``.
+
+Dans le premier cas, l'utilisateur doit deviner la sortie du
+programme. Dans le second cas, le programme doit lire un entier entre
+0 et 99 sur l'entrée standard, et l'utilisateur doit deviner lequel
+donne 42; pour l'instant cet entier doit être unique.
+
+L'infrastructure du module est implantée dans
+`src/cpp/read_program.cpp`_.
+
+
+Mise à jour de l'exercice sur WIMS
+----------------------------------
+
+wims.u-psud.fr -> serveur de l'université -> Accueil WIMS -> modtools -> login -> Restauration
+
+
+Documentation générique des modules WIMS
+========================================
+
+Pour installer des exercices OEF dans un module :
+
+ 1. Créer un module de type OEF
+
+ 2. Pour chaque exercice, créer dans le module un nouveau fichier 
+    d'extension oef dans le répertoire src/ (exemple : src/euclide.oef). 
+    Une zone de  texte apparaît ; y écrire (ou coller) le texte source 
+    de l'exercice. Enregistrer les changements.
+
+ 3. Tester le module.
+
+ 4. Modifier à son goût intro.phtml et endhook.phtml,
+     et tester à nouveau.
+
+
+%%%%%% Pour utiliser directement le module sur un serveur WIMS local,
+
+1- Mettre  le template à la bonne place, 
+en changeant le nom.
+
+2. Modifier intro.phtml
+
+3. Modifier le fichier INDEX.
+
+4. Installer les fichiers sources.
+
+5. Exécuter le script $wims_home/other/bin/src2def. (Cette étape
+   doit être répétée à chaque fois que les fichiers sources sont modifiés). 
+
+
diff --git a/test~coding~readingCppPrograms.fr/TODO b/test~coding~readingCppPrograms.fr/TODO
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/test~coding~readingCppPrograms.fr/src/cpp/read_program.cpp b/test~coding~readingCppPrograms.fr/src/cpp/read_program.cpp
index 35ddd51db0c220dfacc546824cbc4ccfbb220439..8e7838147a547ffb99df7cc54cf30ca09952293c 100644
--- a/test~coding~readingCppPrograms.fr/src/cpp/read_program.cpp
+++ b/test~coding~readingCppPrograms.fr/src/cpp/read_program.cpp
@@ -35,8 +35,8 @@ target=variable io if loop function vector1D vector2D
 #define TARGET_FR tableaux
 #endif
 
-\title{Compréhension d'un programme C++ (TARGET_FR)}
-\description{Compréhension d'un programme C++ (TARGET_FR)}
+\title{Compréhension de programmes C++ (TARGET_FR)}
+\description{Compréhension de programmes C++ (TARGET_FR)}
 \language{fr}
 \niveau{U1}
 \author{Nicolas M. Thiéry}