Candyce :
carnets numériques
et Jupyter au service de l’enseignement
Participation de Paris-Saclay#

Nicolas M. Thiéry, Enseignant-Chercheur, Laboratoire Interdisciplinaire des Sciences du Numérique (LISN), Université Paris-Saclay
16 mars 2023, 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 document présente rapidement Jupyter, Candyce et l’implication de Paris-Saclay dans Candyce.
Au programme#
Carnets numériques et Jupyter
Utilisation à Paris-Saclay
Candyce
Implication de Paris-Saclay dans Candyce
Carnet numérique (notebook)?#
Document interactif entrelaçant Narration, Calcul, Visualisation, Interaction et Programmation
Exemple 1: Étude d’un algorithme de parcours de graphes#
Définitions#
Soit \(G\) un graphe.
un chemin est une suite de sommets \((v_0, v_1, v_2, ...)\) tel qu’il existe une arête entre chaque paire de sommets \(v_i\) et \(v_{i+1}\)
la distance entre deux sommets
u
etv
est la longueur du plus court chemin entreu
etv
(ou la somme des poids des arêtes).On suppose ici que \(G\) est non orienté. La composante connexe d’un sommet \(u\) de \(G\) est l’ensemble des sommets atteignables depuis \(u\) en suivant un chemin dans \(G\).
L’algorithme#
%run -i graph_networkx
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
File /opt/jupyterhub-paris-saclay/wiki/2023-03-16-PresentationCandyceParisSaclay/graph_networkx.py:160
157 examples = graph_examples.Examples(Graph)
159 import copy
--> 160 import graph_networkx
161 import graph_algorithm_player
163 variables = [{'name': 'G', 'type': 'graph' },
164 {'name': 'marked', 'type': 'nodes', 'color': 'green', 'display': True},
165 {'name': 'todo', 'type': 'nodes', 'color': 'red', 'display': True},
166 {'name': 'v', 'type': 'node', 'color': 'yellow', 'display': True}]
File /opt/jupyterhub-paris-saclay/wiki/2023-03-16-PresentationCandyceParisSaclay/graph_networkx.py:161
159 import copy
160 import graph_networkx
--> 161 import graph_algorithm_player
163 variables = [{'name': 'G', 'type': 'graph' },
164 {'name': 'marked', 'type': 'nodes', 'color': 'green', 'display': True},
165 {'name': 'todo', 'type': 'nodes', 'color': 'red', 'display': True},
166 {'name': 'v', 'type': 'node', 'color': 'yellow', 'display': True}]
169 G = graph_networkx.examples.parcours_directed()
ModuleNotFoundError: No module named 'graph_algorithm_player'
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")
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Cell In[3], line 2
1 G = examples.parcours_directed()
----> 2 parcours_visualisation(G, "A")
Cell In[2], line 13, in parcours_visualisation(G, u)
10 marked = {u} # L'ensemble des sommets déjà rencontrés
11 todo = {u} # L'ensemble des sommets déjà rencontrés, mais pas encore traités
---> 13 player.player.reset(copy.deepcopy(locals()))
15 while todo:
16 # Invariants:
17 # - Si `v` est dans `marked`, alors il y a un chemin de `u` à `v`
18 # - Si `v` est dans `marked` et pas dans `todo`
19 # alors tous les voisins de `v` sont dans dans `marked`
20 v = todo.pop()
NameError: name 'player' is not defined
Visualisation#
player

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
Innovation#
Technologies web modernes
Libre, ouvert, interopérable
Julia, Python, R, C++, et des dizaines d’autres langages et systèmesTrès modulaire
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
Exemple: initiative Notebook Now de l’American Geophysical Union
Exemple: analystes financiers dans les banques
from wealth_of_nation import application
application
Pouvoir transformant sur l’enseignement#
Autonomie et personnalisation
grâce à la structure narrative, à la micro-scénarisation, aux retours immédiats
\(\Longrightarrow\) massification, gestion hétérogénéitéEngagement
grâce à l’interaction et la liberté d’explorationFlexibilité
n’importe où, n’importe quand, sur n’importe quel terminal
\(\Longrightarrow\) hybridation, publics empêchés
Ça ne reste qu’un outil!
Explorer, évaluer et partager les bonnes pratiques!
Exemple: utilisation en enseignement à Paris-Saclay#
En Licence, Master, Doctorat, recherche, …
L1 de la faculté des sciences: >600 étudiants sur 1000
En Physique, Math, Info, Géophysique, Agronomie, Chimie, Médecine, STAPS, Droit, …
Pour:
La programmation (un peu)
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
Implication de Paris-Saclay dans Jupyter#
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
Soutenu par le mésocentre DataCenter@UPSud.
5000 utilisateurs inscrits; ~100 utilisateurs quotidiens
Communauté d’utilisateurs :
Groupe informel d’utilisateurs Jupyter@Paris-Saclay (Espace eCampus «Enseigner avec Jupyter»)
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
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 à venir d’un ingénieur logiciel
Prix: Distinguished Jupyter Contributor
Résumé#
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 application
Une adoption massive qui transforme l’enseignement, la recherche
La France à la pointe#
Capytale (porté par Académie de Paris): 500k utilisateurs dans les lycées (100k hebdomadaires)
Pépite QuantStack : PME, core devs Jupyter, logiciel scientifique libre
JupyterCon 2023 (et 2024?) à Paris!
Paris-Saclay à la pointe#
Candyce: promouvoir Jupyter et les carnets dans l’enseignement#
Un soutien institutionnel à un mouvement de fond
Work Package 1 du PEPR d’accélération «Enseignement et Numérique», 12M€, 2023-2027
Actions#
Faire monter en gamme Jupyter pour les besoins de l’enseignement (4M€)
accessibilité \(\longrightarrow\) 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
É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 candidat: QuantStackFrance Université Numérique: déploiement
École Polytechnique
Établissements associés: Grenoble, Rennes, Polynésie, CNAM, Arts et Métiers, Paris *, Erlangen, Bobo Dioulasso?, …
et la communauté!
Calendrier#
fin 2020: lancement du montage par Inria
mars 2021: embarquement Nicolas Thiéry
avril 2021: embarquement officiel Paris-Saclay
présentation à Sylvie Retailleau en présence Isabelle et DIP
accord PDG INRIA, Présidence Paris-Saclay
juin 2021- montage avec longues interactions avec SGPI et ministères sup et sco
fin mars - début avril 2023?: feu vert définitif du gouvernement
avril-mai 2023?: finalisation dossier de contractualisation avec l’ANR
budget, jalons, tâches, …1er avril 2023?: éligibilité des dépenses
avril 2023-août 2024?: phase I (18 mois)
septembre 2023-avril 2027?: phase II (30 mois)
Cadre financier#
Contraintes:
pas de partenaires financés hors établissements du supérieur
pas de financement de fonctionnaire en poste, hors pour une personne à l’echelle du projet et pour du pilotage seulement
Overheads: 20%