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 secours

  • Nautilus 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.

Page web 2019-2020 du cours

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 Private

  • Les 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 suivants

  • Héberger et consulter les devoirs déposé par les étudiants:
    Par exemple, pour retrouver le travail déposé par les étudiants du groupe CandidatsLibres pour le devoir Semaine1, 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-2022

  • Décrire l’environnement logiciel:
    Dépôt ComputerLab

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.