Le coin des enseignants
Contenu
Le coin des enseignants¶
Dépôt pour la préparation du matériel pédagogique du cours «Introduction à la Science des données», L1 Math-Info, Faculté des Sciences d’Orsay, Université Paris Sud.
Présentation du cours¶
Public visé¶
Ce cours s’adresse à un public assez hétérogène, avec des étudiants programmant depuis toujours et d’autre découvrant l’informatique depuis le début de l’année. Ils ont eu comme cours:
Au S1:
Programmation Impérative (C++)
Introduction à l’informatique (web, Python, shell, …) Au S2:
Programmation Modulaire (C++)
Algorithmes et Structures de données (C++)
Séances, salles¶
9 semaines avec 1h de cours et 2h de TP
Voir l”espace de cours pour les annonces, le forum d’aide, le planning, la répartition, les horaires, les salles, le carnet de notes
Modalités des TP et rôle des enseignants¶
Pendant les TP les étudiants travaillent chacun à son rythme, individuellement ou en binôme, sur le sujet qui leur est proposé cette semaine là. Dans la pratique, le sujet prend la forme d’une collection de feuilles de travail Jupyter conçues pour faciliter leur travail en autonomie. Une partie de leur travail est corrigée automatiquement et des corrections seront postées au fur et à mesure. Le rôle du chargé de TP est donc de les accompagner, principalement sous la forme d’aide individuelle, avec occasionnellement une prise de parole pour tous (présenter le TP, donner une explication). Dans la pratique, c’est répondre à quelques questions occasionnelles d’étudiants avancés, débloquer des petits bugs, et consacrer la grande majorité de son temps à suivre de près le travail des plus fragiles pour les aider et les remotiver.
Les chargés de TP prennent en plus en charge:
De la correction manuelle des TPs et projets des étudiants
De l’aide à la préparation du matériel pédagogique
De l’aide pour répondre collaborativement aux questions des étudiants en s’abonnant sur le forum d’aide sur eCampus
Les soutenances de projet en fin de semestre
Règles sanitaires en présentiel¶
Masques correctement portés obligatoires
(2020-2021) Désinfection des claviers et souris (avant et) après la séance
Aération, aération, aération
Nautilus A&B: ouvrir les issues de secoursNautilus B: environ une trentaine + quelques uns avec leurs portables sur les tables
Nautilus A: très mal aéré; chaque fois que possible, envoyer des étudiants dans le Nautilus B
Les étudiants sont coopératifs, des petits rappels à l’ordre fermes mais souriant suffisent en général. Mais le cas échéant, en cas de non respect après salves d’avertissement, vous avez le droit – le devoir – de les virer immédiatement.
Trucs et astuces en distanciel (2020-2021)¶
Faire un sondage pour que les étudiants indiquent où ils en sont (je suis un peu perdu / Connexion a JupyterHub et téléchargement du sujet / Feuille jupyter / feuille Python / feuilles suivantes)
Faire des petits groupes
Se concentrer sur les étudiants les plus fragiles.
Bilans de fin de séance¶
Pour chaque séance, il y aura un ticket sur GitLab où nous demanderons à chacun de faire un petit bilan en quelques lignes du déroulement de sa séance. Pour exemple, voici celui de la semaine 1 en 2020-2021
Logistique, infrastructure¶
Enseigner de l’informatique, comme dans ce cours, c’est intrinsèquement une collaboration massive sur du code prenant des formes variées. Aussi est-il naturel qu’une forge logicielle puisse rendre de nombreux services; de fait, GitLab sera au cœur de notre infrastructure. Mais n’allons pas trop vite en besogne.
Voici les différents éléments de notre infrastructure. Les mêmes éléments sont utilisés par les étudiants pour d’autres cours; ils sont rodés.
Espace de cours sur eCampus¶
Cet espace nous sert:
comme page d’accueil
pour communiquer avec les étudiants: annonces, forum d’aide
pour les quizz
pour la gestion des notes (carnet de notes)
Accès aux logiciels, salles de TP (virtuelles)¶
Nous utiliserons les outils usuels de science des données en Python: Numpy, Pandas, Scikit-Learn, …, le tout sous Jupyter.
Les étudiants (et enseignants!) accèdent à l’environnement logiciel requis soit sur les machines des salles de TP, soit en ligne via le service JupyterHub@Paris-Saclay, soit en les installant sur leur machine (par conda ou Docker: instructions). Cet environnement contient aussi les jeux de données.
Gestion des devoirs¶
Pour télécharger et soumettre leur travail, les étudiants utilisent un
script intro-science-donnees
.
Prise en main Servez vous de
JupyterHub pour faire le début du
TP de la Semaine 1
et prendre cela en main. Lorsque vous soumettez votre travail,
indiquez CandidatsLibres
comme groupe.
Si vous observez les messages en détail, vous constaterez que, derrière la scène, la soumission et la correction automatique des devoirs se fait via la forge GitLab, façon GitHub ClassRoom: chaque devoir est un dépôt git et l’on suit le processus usuel de travail avec git: fork, clone, push, pull. La correction automatique se faisant par intégration continue avec nbgrader. Pour la petite histoire: ce script est basé sur travo, un outil que nous développons avec des collègues d’Orsay et de l’UQAM et qui est utilisé par une vingtaine d’autres cours notamment en L1. Chaque nouveau cours est l’occasion de développer de nouvelles fonctionnalités; cette fois, c’est des améliorations autour de la correction semi-automatique. Donc c’est du béta test massif :-)
Page web¶
Cette page web héberge une version html statique des sujets, solutions (ajoutées au fur et à mesure), et versions enseignant (protégées par mot de passe) des TPs, pour consultation aisée par les étudiants et enseignants. Nous y ajouterons d’autres informations au fur et à mesure.
Forge GitLab¶
Nous utilisons GitLab pour:
Collaborer sur le matériel pédagogique:
Dépôt Instructors.Partager des documents privés (sujets d’examens, …):
Dépôt PrivateLes discussions pédagogiques:
par des tickets, consultables comme un tableau de bord.Publier la version étudiant des sujets:
Dépôt 2021-2022/Semaine1 et suivantsHéberger et consulter les devoirs déposé par les étudiants:
Par exemple, pour retrouver le travail déposé par les étudiants du groupeCandidatsLibres
pour le devoirSemaine1
, consulter le dépôt 2021-2022/CandidatsLibres/Semaine1 et cliquez sur le nombre à gauche du bouton Fork.Modéliser l’équipe pédagogique:
Groupe 2021-2022Décrire l’environnement logiciel:
DépôtComputerLab
Groupe Signal¶
Pour la communication d’urgence (typiquement: problème en TP, retard ou absence imprévue), nous utilisons un groupe Signal (application de messagerie instantanée libre et sécurisée). Instructions:
Installez l’application Signal sur votre téléphone
Envoyez un message Signal à Nicolas qui vous rajoutera au groupe
Documents pédagogiques¶
Documents sources¶
La plupart des documents pédagogiques sont des feuilles de travail
Jupyter. À terme tous le seront. Leurs sources sont dans le dépôt
Instructors;
par exemple dans Semaine1
pour la semaine 1. Pour télécharger ces
sources:
git clone https://gitlab.dsi.universite-paris-saclay.fr/L1InfoIntroScienceDonnees/Instructors.git
Ci dessous, on notera <Instructors>
le dossier produit; vous pouvez
le placer où vous le souhaitez.
Production des sujets étudiant¶
Les versions étudiants (sans solutions) sont générées automatiquement
à l’aide, notamment, de l’outil nbgrader
:
cd <Instructors>/
make assignments
Le résultat est dans <Instructors>/Devoirs/<Devoir>
et
consorts. Vous pouvez y essayer les feuilles de travail.
Il faut que le nom <Devoir>
du devoir apparaisse dans la variable
Assignments
, ligne 3 du fichier Makefile
.
Déploiement des sujets étudiants¶
Pour déployer la version étudiant sur GitLab, il faut au préalable configurer le répertoire en dépôt git :
cd <Instructors>/Devoirs/<Devoir>
git init
git add .
git commit -m "Préparation"
puis le déployer sur GitLab, d’abord en privé le temps que l’équipe pédagogique fasse les tests :
intro-science-donnees release <Devoir> --visibility=private
puis en public :
intro-science-donnees release <Devoir>
Le dépôt git produit est alors ici :
https://gitlab.dsi.universite-paris-saclay.fr/L1InfoIntroScienceDonnees/2021-2022/Semaine1
avec un fork pour chaque groupe de TD; par exemple :
https://gitlab.dsi.universite-paris-saclay.fr/L1InfoIntroScienceDonnees/2021-2022/MI1/Semaine1
Page web¶
La page web est générée automatiquement en utilisant l’outil Jupyter-Book qui transforme une collection de feuilles Jupyter et autres fichiers Markdown en un bouquin, en gérant table des matières, liens croisés, etc:
cd <Instructors>
make web
Vous pouvez consulter le résultat dans <Instructors>/_build/html
.
À ce stade, une intervention manuelle de Nicolas est requise pour déployer la page web sur le site.
make install
Une version mise à jour par intégration continue à chaque commit est disponible ici, typiquement pour relectures:
https://l1infoinitiationsciencedonnees.gitlab.dsi.universite-paris-saclay.fr/Instructors/
Si la mise à jour ne se fait pas, on peut consulter les logs depuis:
https://gitlab.dsi.universite-paris-saclay.fr/L1InfoInitiationScienceDonnees/Instructors/-/pipelines
Feuilles Jupyter en Markdown avec Jupytext¶
Les feuilles de travail Jupyter ont tendance à contenir beaucoup d’informations volumineuses et/ou volatiles (sorties, ordre d’exécution) et sont dans un format json. De ce fait la gestion de version avec, par exemple, git n’est pas très pratique: risques de conflits, diffs illisibles; elle est aussi gourmande en place disque. Pour palier à cela, nous utilisons l’extension Jupytext de Jupyter qui permet de sauvegarder ses feuilles dans un format texte pur; nous utilisons le format MyST Markdown (Markdown enrichi avec des fonctionalité du format ReST pour les références croisées, etc). Grâce à cela, vous pouvez éditer les sources au choix avec Jupyter ou avec votre éditeur de texte préféré, voire directement avec l’éditeur en ligne de GitLab pour des petites retouches.