⚙️ Structure du site et fonctionnement
Cette page présente les choix techniques réalisés pour développer le site ainsi que le fonctionnement des différents outils pédagogiques mis à disposition.
🧑🎓 Philosophie pédagogique
L'enseignement m'a fait constater qu'une correction obtenue trop rapidement est souvent oubliée tout aussi rapidement. À l'inverse, la recherche et l'erreur vont généralement être mieux retenues.
Les exercices et les QCM du site ont donc été conçus pour encourager cette démarche. Mon objectif n'est pas d'empêcher l'accès aux réponses, mais d'inciter chacun à prendre le temps de réfléchir, d'expérimenter et de comprendre les concepts étudiés.
🔡 Langage et bibliothèques
Le site est développé en Python 🐍 et utilise le framework Django 🤠 pour gérer l'affichage des pages. Les autres modules utilisés sont principalement des bibliothèques standard de Python (random, json, etc.), utilisées pour gérer les exercices aléatoires ou faciliter la lecture des données des QCM.
💾 Gestion des données du site
Pour la structure de ce site, j'ai minimisé les structures en HTML (seulement 3 templates pour afficher les cours, afficher les exercices et afficher les QCM). Tout est stocké dans des fichiers au format texte. Ces fichiers vont contenir toutes les données nécessaires à afficher sur les pages.
Pour ajouter une page sur le site, il suffit d'ajouter un fichier texte avec les données nécessaires devant être affichées. Des balises de type #Partie1, #Partie2... vont permettre au code de séparer les données du fichier texte et de les afficher dans les différentes parties du template (titre, contenu, énoncé de l'exercice, correction, image...).
🤯 Fonctionnement des exercices
Les exercices vont générer des données aléatoirement (dans des plages de valeur réalistes) pour les différentes données de l'exercice. Ces données vont alors être intégrées dans le texte de l'énoncé à l'aide de balises de type {{Data1}}, {{Data2}}. Dans le texte de l'énoncé, des zones de texte vont permettre aux utilisateurs d'ajouter les valeurs qui vont être testées.
Lorsque vous cliquez sur le bouton "Valider", les noms des données écrites dans les équations vont être remplacées par leurs valeurs et l'équation va être calculée. La valeur calculée va être comparée avec la donnée utilisateur (avec une tolérance de 5%) et un commentaire va être ajouté pour informer l'utilisateur si la réponse est bonne ou erronée. Si l'utilisateur a toutes les bonnes réponses, la correction apparaît pour que l'utilisateur puisse regarder le développement physique.
Si l'utilisateur n'arrive pas à terminer l'exercice, il peut demander un code lui permettant de regénérer l'exercice avec les mêmes données en utilisant la seed utilisée pour générer les données aléatoirement lors de la génération de l'exercice. Pour cela, l'utilisateur doit attendre 1h et cette correction sera disponible seulement 24h. Ces limites sont ici pour encourager l'utilisateur à refaire l'exercice par lui-même tout en lui offrant la possibilité d'avoir la réponse s'il n'y arrive pas.
🧮 Fonctionnement des QCM
Les QCM sont stockés dans un fichier JSON représentant une liste de dictionnaires python contenant la question, les propositions et la/les réponses attendues. Les fichiers contiennent plusieurs dizaines de questions différentes. A chaque génération de la page, 5 questions vont être sélectionnées aléatoirement.
Lorsque l'utilisateur valide ses réponses, les bonnes réponses vont être marquées comme valides et les mauvaises comme invalides. Cependant la correction ne vous donne pas la correction, j'encourage de ce fait l'utilisateur à se replonger dans les cours et réessayer plus tard. Le but étant que l'utilisateur cherche la réponse pour qu'il s'en souvienne ! (Après tout, le but est pédagogique !)
🏛️ Historique
Le site est passé par plusieurs phases :
- 🧸 Un gadget pour mon mémoire : Dans un premier temps, ce site n'était qu'une vitrine en ligne de mon mémoire de fin d'études. Le sujet de la théorie du chaos m'a amené à réaliser plusieurs simulations en Python, et l'ajout de pages web consultables me semblait être une bonne idée pour gagner quelques points. J'ai conservé cette partie, car certains concepts présentés constituent aujourd'hui la base d'outils que j'utilise dans ma vie professionnelle (je pense notamment aux méthodes de calcul employées dans les moteurs de calcul thermique du bâtiment). C'est également un travail dont je reste fier.
- 💾 Un partage simplifié : Avant que l'école dans laquelle j'enseigne ne mette en place des outils de partage, il était plus simple de fournir une adresse web à mes étudiants pour diffuser les documents et les supports de cours. Le site est ensuite resté plusieurs années en sommeil lorsque ces outils ont été déployés.
- ✴️ Un renouveau récent : Après avoir accepté d'enseigner la mécanique des fluides, les demandes d'exercices d'entraînement de la part de mes étudiants m'ont amené à réfléchir à de nouvelles façons d'enrichir mes supports pédagogiques. J'ai donc entièrement repensé le site en modifiant sa logique interne afin de permettre à chacun de s'entraîner sur les mêmes exercices tout en générant aléatoirement les données d'entrée. Les corrections restent identiques dans leur méthode, mais les valeurs changent à chaque génération, rendant chaque exercice unique.
- 💻 Vers un développement plus "pro" : Le site a d'abord été hébergé sur PythonAnywhere. La possibilité de disposer gratuitement d'un espace d'hébergement était particulièrement intéressante pour découvrir le développement web (de plus, j'étais étudiant donc pauvre). Les évolutions récentes du projet m'ont cependant conduit à acquérir un nom de domaine et à migrer vers un hébergement français. Le coût reste très raisonnable au regard des avantages apportés, et je suis heureux de pouvoir proposer à mes étudiants un espace plus agréable et plus complet.
⚠️ Limitations et améliorations
Ce site est développé sur mon temps libre. Malgré le soin apporté à sa réalisation, des erreurs peuvent subsister dans les cours, les exercices ou les corrections. Les retours constructifs sont toujours les bienvenus.
L'intégralité du site est développée et maintenue par une seule personne. Outre les contenus pédagogiques, cela implique la conception de l'architecture, le développement des outils, l'hébergement et la maintenance.
💚 Remerciements
Merci à tous les étudiants qui, par leurs questions, leurs remarques et parfois leurs erreurs, m'ont permis d'améliorer progressivement le contenu de ce site.