Jupyter Notebook: un espace scientifique interactif et open-source¶

Marc BUFFAT département mécanique, Université Lyon 1

Notebook Jupyter¶

Application web pour créer et partager des documents numériques incluant des cellules avec:

  • du code (en JUlia, PYthon, R et autres..)
  • le résultat d'exécution du code
  • du texte avec mise en page et formule mathématique ($\LaTeX$)
  • des images et de la vidéo
  • possibilité de création de livre de cours avec jupyter-book

Exemples de notebook¶

  • TP Licence L2 traitement de données climatique
  • Autres exemples de notebook: https://perso.univ-lyon1.fr/marc.buffat
  • Livre de cours avec Jupyter-book: livre INtroduction à la PRogrammation Scientifique
  • Site Jupyter: https://jupyter.org
  • Teaching and Learning with Jupyter (L. Barba): https://jupyter4edu.github.io/jupyter-edu-book
  • Large communautés internationale (universitaire / logiciels libres) (partage sous github/gitlab)

avantages¶

  1. format standard

    • format standard XML incluant les résultats d'exécution
    • conversion en HTML ou PDF
  2. application web standard

    • utilise un navigateur web
    • et un serveur web
      • local sur son PC (sous Linux, Windows, Mac)
      • ou distribué multi-utilisateurs (serveur jupyterhub)

intérêt pour l'enseignement¶

  1. traitement numérique dans tous les domaines scientifiques

    • pour la modélisation et la simulation numérique
    • pour l'analyse et le traitement de données
    • pour l'IA et le machine learning
  2. utilisation flexible en cours

    • TP numérique ou TP virtuel
    • devoirs ou compte rendu de projet
    • cours interactif

Serveurs Jupyter Hub¶

plateforme numérique pour les étudiants / enseignants / chercheurs donnant accès à

  • la puissance des notebooks
  • des environnements et ressources de calcul
  • un espace de travail personnel
  • mais avec des ressources partagées

intérêt pour l'utilisateur (étudiant)¶

  • aucune installation sur son PC
  • aucune administration, ni mise à jour
  • nécessite uniquement un navigateur web (PC/tablette/smartphone)
  • accès 24h/24h

intérêt pour l'enseignement¶

  • environnement uniforme (bibliothèques)
  • inclusif (indépendant du matériel / accès 24h/24h)
  • serveurs de calcul partagés (dans un DataCenter)
    • gestion centralisée (/ salles informatiques)
    • plus écologique (/ salles informatiques)
    • accès 24h/24h
    • passage à l'échelle

Serveurs Jupyter: utilisation classique¶

  1. mise en place d'un serveur Jupyterhub accessible à tous les étudiants

    • serveur jupyter.mecanique.univ-lyon1.fr
  2. utilisation classique en complément de cours (devoir / CR TP)

    • consigne de l'enseignant sur le portail pédagogique
    • chaque étudiant travaille sur son notebook sur le serveur
    • transmet son travail sur le portail pédagogique (format pdf)
  3. utilisation de type TP / devoir

    • accès en dehors des séances
    • version JupyterLab pour un environnement de programmation
    • travail en autonomie
  4. mais pas de gestion de cours sur le serveur

    • échange de données très lourd (nécessité de conversion)
    • pas de test ou d'évaluation automatique du travail
    • pas de test de similarité

Serveurs Jupyter avec gestion de cours¶

système basé sur

  1. la version jupyter / nbgrader
  2. des outils de configuration / gestion / évaluation par cours avec

    • une gestion des étudiants et équipe pédagogique
    • des bibliothéques python d'outils et d'exercices
    • une interface web de gestion / évaluation des cours

interface web de gestion du cours (nbgrader + gestion_cours)¶

  • distribuer et récupérer simplement les TP des étudiants
  • gestion des étudiants
  • détection de plagiat
  • accès simple au travail des étudiants (format html, pdf)
  • notation / évaluation semi-automatique du travail des étudiants
  • interface simple avec Tomuss
  • accès interactif aux dossiers de TP des étudiants

logiciel libre¶

  • développé au départ pour des besoins pédagogiques personnels
  • partagé dans l'esprit du logiciel libre et de Linux.
  • basé sur la philosophie UNIX et Python
    • KISS, Keep it simple, stupid (Art of Unix Programming)
    • simple is better than complex (zen du python)
  • utilisation serveur gitlab

Prototype existant¶

serveurs de cours Jupyter (cours/classe)¶

  • jupyterL2.mecanique (~ 100 utilisateurs simultanés)
  • jupyterL3.mecanique {~ 80 utilisateurs simultanés)
  • jupyterM1.mecanique (~ 50 utilisateurs simultanés)
  • jupyterM2.mecanique (~ 40 utilisateurs simultanés)
  • jupyterL1.mecanique (serveur de test)

serveur Jupyterhub (Python/R/Octave/SageMath)¶

  • https://jupyter.mecanique.univ-lyon1.fr

large possibilité de structure de cours suivant les besoins¶

  • un seul intervenant avec peu d'étudiants
  • cours avec une équipe pédagogique
  • cours avec de nombreux étudiants: structuration en groupes de TP
  • ensemble de cours (meta-cours) liés à une formation

large type de notebooks suivant les besoins¶

  • notebook classique à trous
  • notebook de cours à trous avec questionnaire
  • notebook avec des tests unitaires pour le code (nbgrader)
  • notebook avec des tests sur les commentaires (texte / orthographe / pertinence)
  • notebook avec test de similitude
  • notebook avec exercices tirés au hasard (avec validation)
  • jupyterlab avec librairie (test de validation)
  • jupyterlab avec CR en $\LaTeX$ (similarité)

matériels pédagogiques¶

  • notebooks développés sur son ordinateur

    • installation de Jupyter avec anaconda ou pip
  • ou utilisation du serveur Jupyter (accessible à tous les enseignants)

    • jupyter.mecanique.univ-lyon1.fr
  • ressources sur le web

    • exemples de notebooks sur nbviewer.jupyter.org
    • galerie de notebooks sur github.com/jupyter/jupyter/wiki
  • exemple basique TP1.ipynb

  • livre de cours avec Jupyter-book: livre INtroduction à la PRogrammation Scientifique

exemples de cours¶

  • cours L2 : jupyterL2.mecanique
    • outils informatique pour la méca., mécanique des solides indéformables
  • cours L3 : jupyterL3.mecanique
    • mécanique des fluides, calcul scientifique
  • cours M1 : jupyterM1.mecanique
    • éléments finis, atelier numérique
  • cours M2 : jupyterM2.mecanique
    • méthodes numériques avancées, data science, machine learning

exemples de notebook de cours (suite)¶

  • notebook TP outils info. en L2 05-TP_regression_lineaire
  • notebook TP virtuel meca fluide TP2_profil
  • notebook cours atelier num. en M1 base Python
  • notebook de NEW_COURSE

gitlab¶

  • https://forge.univ-lyon1.fr

prometeus (supervision)¶

  • https://prometheus.mecanique.univ-lyon1.fr/d/17hUqSAGk/nbgrader?orgId=1&refresh=30s

Projet "Include: axe 11"¶

  • mise à l'échelle de la solution
  • virtualisation des serveurs (openstack ,KVM)
  • automatisation / amélioration de la solution
  • formation des enseignants
  • aide aux développement de ressources pédagogiques

Questions ?¶