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}