Candyce : carnets numériques et Jupyter au service de l’enseignement#

../_images/jupyter3.png

Nicolas M. Thiéry, Professeur, Laboratoire Interdisciplinaire des Sciences du Numérique (LISN), Université Paris-Saclay

03 juin 2024, Orsay

Résumé#

L’usage des carnets numériques (notebook) et de Jupyter connaît un essor rapide comme outil pour l’apprentissage de la programmation, du calcul, du traitement des données, aussi bien dans l’enseignement supérieur qu’au lycée (avec notamment Capytale).

Le programme Candyce (porté par Inria et l’Université Paris-Saclay) vise à accompagner l’adoption de Jupyter dans l’enseignement supérieur et le scolaire.

Ce diaporama présente rapidement Jupyter et Candyce

Au programme#

  1. Carnets numériques et Jupyter

  2. Exemple: utilisation et actions à Paris-Saclay

  3. Candyce

Carnets numériques (notebook)?#

Document riche interactif entrelaçant Narration, Calcul, Visualisation, Interaction, Programmation, voire Inférence

Indication

Exemple

Ces diapos sont un carnet numérique!

Concrètement?#

Jusqu’ici, nous avons vu de la narration: raconter une histoire

Maintenant, voici un petit calcul mathématique :

from sympy import *
x = symbols('x')

integrate( x/(x**2+2*x+1), x)
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Cell In[1], line 1
----> 1 from sympy import *
      2 x = symbols('x')
      4 integrate( x/(x**2+2*x+1), x)

ModuleNotFoundError: No module named 'sympy'

Un peu de visualisation de données :

from ipyleaflet import Map, Marker
# center = (48.70180933810075, 362.16683685639214)
# center = (48.842417580826314, 362.3446074074784) Paris
center = [48.7063, 362.1798]
m = Map(center=center, zoom=15)   
marker = Marker(location=center, draggable=True)
m.add_layer(marker);
m

Un peu d”interaction :

from ipywidgets import Button, IntSlider, HBox, Label 
slider = IntSlider(value=3, vmin=0, vmax=10)
button = Button(description="Click me!")
label = Label()
def on_click(event):
    label.value = str(slider.value)
button.on_click(on_click)
HBox([slider, button, label])
from matplotlib.figure import Figure
import numpy as np
from ipywidgets import interact

@interact
def f(A=(0, 5.), f=(0, 25.)):
    x = np.arange(0,1,0.001)
    y = A*np.sin(2 * np.pi * f * x)
    fig = Figure()
    subplot = fig.add_subplot()
    subplot.plot(x, y)
    subplot.set_xlabel('temps (s)'); subplot.set_ylabel('amplitude'); subplot.set_ylim([-6, 6])
    return fig

Un peu de programmation, avec visualisation interactive :

from laby.global_fr import *
Laby("1b")
debut()
avance()
droite()
avance()
prend()
# Compléter le programme!

Exemple : Étude d’un algorithme de parcours de graphes#

Narration#

Programmation : l’algorithme#

%run -i graph_networkx
def parcours_visualisation(G, u):
    """
    INPUT:
    - 'G' - un graphe
    - 'u' - un sommet du graphe
    
    OUTPUT: la liste des sommets `v` de `G`
            tels qu'il existe un chemin de `u` à `v`
    """
    marked = {u} # L'ensemble des sommets déjà rencontrés
    todo   = {u} # L'ensemble des sommets déjà rencontrés, mais pas encore traités
    
    player.player.reset(copy.deepcopy(locals()))
    
    while todo:
        # Invariants:
        # - Si `v` est dans `marked`, alors il y a un chemin de `u` à `v`
        # - Si `v` est dans `marked` et pas dans `todo`
        #   alors tous les voisins de `v` sont dans dans `marked`
        v = todo.pop()
        # Observation des variables locales
        player.set_value(copy.deepcopy(locals()))
        for w in G.neighbors(v):
            
            if w not in marked:
                marked.add(w)
                todo.add(w)
                # Observation des variables locales
                player.set_value(copy.deepcopy(locals()))
        v = None
        # Observation des variables locales
        player.set_value(copy.deepcopy(locals()))
    return marked

Calcul#

G = examples.parcours_directed()
parcours_visualisation(G, "A")

Visualisation#

player

Quoi de neuf, vraiment, avec Jupyter? https://jupyter.org#

../_images/jupyter-community.jpg

Une communauté internationale transverse: académie, industrie, société civile

qui développe des standards ouverts, des logiciels libres et des services web

pour le calcul avec l’humain dans la boucle

Innovations#

Indication

Technologies web modernes \(\Longrightarrow\) En tout lieu, tout temps, sur tout dispositif

Indication

Libre, ouvert, interopérable Julia, Python, R, C++, et des dizaines d’autres langages et systèmes
\(\Longrightarrow\) Une porte ouverte sur l’univers du calcul libre

Indication

Très modulaire \(\Longrightarrow\) Flexibilité pour une large gamme de cas d’usages (mais aussi complexité)

Massivement adopté#

  • pour l’enseignement, la recherche (sciences dures -> SHS), l’ingénierie, la science des données

  • millions d’utilisateurs et de ressources

  • Amazon SageMaker, Google Colaboratory, Microsoft Azure Notebooks, Bloomberg BQuant, Intel Trusted Analytics Platform, IBM Watson Studio, Saturn Cloud, noteable.io

Pouvoir transformant sur la pratique de la recherche, de la science#

  • Un support unique pour penser et raconter, avec du code et des données
    exploration, transmission, reproduction, réutilisation, dissémination
    \(\Longrightarrow\) Science Ouverte

  • Granger, Brian E., and Fernando Pérez. « Jupyter: Thinking and storytelling with code and data. » Computing in Science & Engineering 23.2 (2021): 7-14.

  • Perkel, Jeffrey M. « Why Jupyter is data scientists” computational notebook of choice. » Nature 563.7732 (2018): 145-147.

Indication

Belles histoires

Pouvoir transformant sur la dissémination de la connaissance#

Indication

Un terrain fertile

Par leur souplesse, les carnets facilitent

\[\text{Dissémination} {\Longrightarrow \atop \Longleftarrow} \text{Exploration and montée en compétence}\]

Indication

Réduire les barrières entre

  • experts et novices

  • développeurs et utilisateurs

  • enseignant et étudiants

  • recherche, enseignement supérieur et scolaire

  • académie et industrie

via les communautées, les outils partagés, et les communs numériques

Pouvoir transformant sur l’enseignement#

Indication

Autonomie et personnalisation grâce à la structure narrative, à la micro-scénarisation, aux retours immédiats
\(\Longrightarrow\) massification, gestion hétérogénéité

Indication

Engagement grâce à l’interaction et la liberté d’exploration

Indication

Flexibilité n’importe où, n’importe quand, sur n’importe quel terminal
\(\Longrightarrow\) hybridation, publics empêchés

Pouvoir transformant sur l’enseignement par le numérique scientifique?#

2006: TED talk Les meilleures stastistiques que vous ayez jamais vues de Hans Rosling

\(\Longrightarrow\) le pouvoir de la visualisation de données pour transmettre les idées et les faits

Maintenant au bout des doigs des enseignants et étudiants pour exploration interactive :

from wealth_of_nation import application
application

(tiré de la documentation de bqplot)

Ça ne reste qu’un outil!#

Explorer, évaluer et partager les bonnes pratiques

Adoption des carnets numériques et Jupyter pour l’enseignement#

Exemple: utilisation en enseignement à Paris-Saclay#

  • En Licence, Master, Doctorat, recherche, …

    • 600/1000 étudiants de L1 de la Faculté des Sciences d’Orsay

    • 5000 utilisateurs

  • En Physique, Math, Info, Géophysique, Agronomie, Chimie, Médecine, STAPS, Droit, …

  • Pour:

  • Avec Python, C++, SageMath, R, shell, …

  • Depuis: salle TP, services Jupyter@Paris-Saclay, mydocker (Centrale-Supélec), CoCalc

Exemple: actions à Paris-Saclay#

Des dynamiques similaires dans de multiples universités en France et dans le monde!

Synthèse#

Indication

Jupyter

  • Une communauté internationale transverse: académie, industrie, société civile
    qui développe des standards ouverts, des logiciels libres et des services web
    pour le calcul avec l’humain dans la boucle

  • Un écosystème riche d’outils extensibles et composables
    Le carnet en est juste une application

  • Une adoption massive qui transforme la recherche, l’enseignement, la science

Indication

La France à la pointe

  • JupyterCon 2023, PyData 2024 à Paris!

  • Pépite QuantStack : PME, core devs Jupyter, logiciel scientifique libre

  • Capytale (porté par Académie de Paris): 500k utilisateurs dans les lycées (100k hebdomadaires)

  • Actions locales: CNAM, Grenoble Alpes, Lyon 1, Paris-Cité, Paris-Saclay, Rennes, Rouen, …

Potentiel: des millions d’utilisateurs, dans le scolaire et le supérieur#

Comment pleinement réaliser ce potentiel?#

Constat à Paris-Saclay et ailleurs

  • Gros impact des actions locales

  • qui ne tiennent que par le dévouement de quelques uns en marge de leurs missions

  • Il y aurait tant à faire, rien que sur notre déploiement local:

    • scalabilité, qualité de service

    • accessibilité

    • diversité de logiciels

    • intégration d’agents conversationnels

  • Alors que comparativement Paris-Saclay a des moyens!

Attention

Pas la bonne échelle! .

Candyce: promouvoir Jupyter et les carnets dans l’enseignement#

https://candyce.org/

Proposition de soutien institutionnel national ambitieux à un mouvement de fond

Candyce I: WP 1 du PEPR d’accélération «Enseignement et Numérique», 12M€, 2023-2027#

(finalement non financé)

Actions#

  1. Faire monter en gamme Jupyter pour les besoins de l’enseignement (4M€)
    accessibilité, facilité d’utilisation, besoins métiers

  2. Déployer une infrastructure nationale souveraine (1.5M€)
    pour l’enseigment scolaire et supérieur
    et la recherche

  3. Accompagner dans le scolaire (1.5M€)

  4. Accompagner dans le supérieur (1.5M€)

  5. Fortifier un écosystème public / industriel / société civile

  6. Embarquer et nourrir la recherche (1M€)

Embarquer et nourrir la recherche?#

  • Un objet de recherche : notamment évaluer et informer :

    • la pertinence et les usages pédagogiques de Jupyter

    • la conciliation éthique, sécurité et valorisation des données pour tous les acteurs (apprenants, enseignants, chercheurs)

    • l’éco-responsabilité de l’infrastructure

  • Un observatoire d’usages pédagogiques :

    • traces d’apprentissage de millions d’utilisateurs!

    • financements de projets de recherche:

      • par AAP Candyce (qq postdocs, stages, …)

      • par AAP du WP3 du PEPR «Enseignement et Numérique»

    • en lien avec la plateforme des données de l’éducation
      WP2 du PEPR «Enseignement et Numérique»

  • Un outil de recherche

Une fine équipe#

  • Inria: maîtrise d’ouvrage

  • Université Paris-Saclay: maîtrise d’œuvre, coordination accompagnement dans le supérieur

  • Direction du Numérique pour l’Enseignement (DNE), Académie de Paris: accompagnement dans le scolaire

  • Université ~~de Lorraine~~ Sciences Sorbonne Université (?): coordination recherche

  • Prestataire sur appel d’offre: développement logiciel
    Au moins un excellent candidat

  • France Université Numérique: déploiement sur cloud public souverain

  • École Polytechnique: accompagnement sup et sco

  • Établissements associés: Grenoble, Rennes, Polynésie, Paris *, CNAM, Arts et Métiers, Erlangen, Bobo Dioulasso?, …

  • et la communauté!

Conclusion#

Nous avons une communauté, un écosystème, des partenaires mobilisables, un plan modulaire, des valeurs fortes,
et un environnement national unique pour mutualiser et accélerer les actions locales,

pour mettre Jupyter, les carnets numériques et le numérique scientifique libre
au bout des doigts de millions d’apprenants et enseignants,

par des outils, des services et des contenus,
par un usage raisonné, éthique et souverain des traces d’apprentissage,

pour transformer demain l’enseignement du numérique scientifique,
pour transformer après-demain l’enseignement par le numérique scientifique?

en France et au delà.

Nous sommes prêts (depuis trois ans).

Allons-y!

Candyce II: stratégie d’accélération#

Note

Par nature, le programme Candyce originel est composé d’une collection modulaire d’actions indépendantes et complémentaires pour accélérer un mouvement de fond. De ce fait, tout financement partiel sera utile. Nous pourrons, selon le volume et les finalités, mettre en cohérence un sous-ensemble d’actions et mobiliser les partenaires adéquats. La contrainte principale est de pouvoir, au moins pour certaines actions, financer des partenaires privés.

En cours: travaux préparatoires

  • Infrastructure locale avec potentialité de passage à l’échelle

  • Outils métiers Financements: locaux (SaclAI-School, Idex, …)

Court terme: premières actions nationales

Exemples:

  • Première infra nationale à horizon +1 an

  • Besoins métiers urgents

  • Production de ressources pédagogiques

  • Recensement et animation de communauté Besoin: quelques 100k€
    Quel vecteur(s) de financement?

Moyen terme

  • Déploiement pérenne pour le sup et la recherche

  • Besoins métiers

  • Accompagnement Besoin: quelques M€
    Quel vecteur(s) de financement?