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

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#
Carnets numériques et Jupyter
Exemple: utilisation et actions à Paris-Saclay
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#

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
ACM Software System Award’17
The Virtual Research Environment by CERN and EOSC: basé sur Jupyter
Déploiement national Calysto au Canada
Initiative Notebook Now de l’American Geophysical Union: AGU 2023
GT notebook de l’infrastructure Huma-Num des humanités numériques
Pouvoir transformant sur la dissémination de la connaissance#
Indication
Un terrain fertile
Par leur souplesse, les carnets facilitent
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#
Data 8: science des données pour tous les étudiants à UC Berkeley
500k élèves des lycées utilisant Capytale
Livre teaching and learning with Jupyter, Barba et al.
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:
L’introduction à la programmation
Exemple: Introduction à la Programmation Impérative (en C++) L1 Math-InfoLe calcul
Exemple: Méthodes Numériques en L1-L3 de physiqueLa science des données, l’IA
Exemple: Initiation à la Science des Données L1 Math-InfoParcourSup!
Avec Python, C++, SageMath, R, shell, …
Depuis: salle TP, services Jupyter@Paris-Saclay, mydocker (Centrale-Supélec), CoCalc
Exemple: actions à Paris-Saclay#
Coordination projet Européen H2020 d’e-Infrastructure de recherche OpenDreamKit 2015-2019
environnements virtuels de calcul pour les mathématiques et au delà,
basé sur Jupyter
prix Étoiles de l’Europe 2020 du CNRS, catégorie Science Ouverte
Déploiement et montée en gamme depuis 2017 du service JupyterHub@Paris-Saclay
5000 utilisateurs inscrits (1800 hors Paris-Saclay); ~100 utilisateurs quotidiens
Soutenu par le mésocentre DataCenter@UPSud
Convergence en cours avec myDocker@CentraleSupélec
Animation d’un groupe d’utilisateurs
Soutien institutionnel à l”innovation pédagogique
Exploration, validation pédagogique et déploiement de solutions technologiques et de bonnes pratiques pédagogiques
Soutenue par des Congés pour Innovation Pédagogique: 2020-2021,2021-2022,2023-2024?
Projet CoSaclayCalc AAP Pédagogie École Universitaire
Développement collaboratif de communs numériques
Production de ressources pédagogiques
Contributions à l’écosystème Jupyter: adoption précoce, bonnes pratiques, rapports de bugs, code, …
Travo solution innovante de gestion des devoirs informatique basée sur les forges logicielles, comme GitLab@Paris-Saclay.
Soutenu par le CMA SaclIA (2022-):
financement interventions d’un ingénieur pédagogique
recrutement d’un ingénieur logiciel
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 boucleUn écosystème riche d’outils extensibles et composables
Le carnet en est juste une applicationUne 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#
Candyce: promouvoir Jupyter et les carnets dans l’enseignement#
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#
Faire monter en gamme Jupyter pour les besoins de l’enseignement (4M€)
accessibilité, facilité d’utilisation, besoins métiersDéployer une infrastructure nationale souveraine (1.5M€)
pour l’enseigment scolaire et supérieur
et la rechercheAccompagner dans le scolaire (1.5M€)
Accompagner dans le supérieur (1.5M€)
Fortifier un écosystème public / industriel / société civile
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 candidatFrance 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).
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?
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! .