---
jupytext:
  notebook_metadata_filter: rise
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
    jupytext_version: 1.14.4
kernelspec:
  display_name: Python 3 (ipykernel)
  language: python
  name: python3
rise:
  auto_select: first
  autolaunch: false
  centered: false
  enable_chalkboard: true
  height: 100%
  margin: 0
  maxScale: 1
  minScale: 1
  scroll: true
  slideNumber: true
  start_slideshow_at: selected
  transition: none
  width: 90%
---

```{code-cell} ipython3
---
slideshow:
  slide_type: slide
tags: [remove-cell]
---
%%html
<style>
.admonition .admonition-title {
  font-size: xx-large;
}
</style>
```

+++ {"slideshow": {"slide_type": "slide"}}

# Candyce :<br> carnets numériques <br> et Jupyter au service de l'enseignement

+++

<img src="media/jupyter.png" width="50%" align="right" style="opacity:0.8;filter:alpha(opacity=100);"/>

<!--Diapos et tutoriel interactif en ligne:  
https://tutoriels-jupyter.pages.in2p3.fr/ -->

+++

[Nicolas M. Thiéry](https://Nicolas.Thiery.name/),
Enseignant-Chercheur,
Laboratoire Interdisciplinaire des Sciences du Numérique ([LISN](https://lisn.upsaclay.fr/)), 
Université Paris-Saclay

+++

29 juin 2023, Orsay

+++ {"slideshow": {"slide_type": "skip"}}

## 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

+++ {"slideshow": {"slide_type": "subslide"}}

## Au programme

1. Carnets numériques et Jupyter
2. Exemple: utilisation et actions à Paris-Saclay
3. Candyce

+++ {"slideshow": {"slide_type": "slide"}}

## Carnet numérique (notebook)?

+++ {"slideshow": {"slide_type": "fragment"}}

Document interactif entrelaçant **Narration**, **Calcul**, **Visualisation**, **Interaction** et **Programmation**

+++ {"nbgrader": {"grade": false, "grade_id": "cell-ccee3dfdd5a11682", "locked": true, "schema_version": 3, "solution": false, "task": false}, "slideshow": {"slide_type": "subslide"}}

### Exemple 1: Étude d'un algorithme de parcours de graphes

+++ {"nbgrader": {"grade": false, "grade_id": "cell-ed2d68bc54d324e9", "locked": true, "schema_version": 3, "solution": false, "task": false}, "slideshow": {"slide_type": "-"}}

#### 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` et `v` est la longueur du plus court chemin entre `u` et `v` (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$.

+++ {"nbgrader": {"grade": false, "grade_id": "cell-ac97467184074185", "locked": true, "schema_version": 3, "solution": false, "task": false}, "slideshow": {"slide_type": "subslide"}}

#### L'algorithme

```{code-cell} ipython3
---
slideshow:
  slide_type: '-'
---
%run -i graph_networkx
```

```{code-cell} ipython3
---
nbgrader:
  grade: false
  grade_id: cell-b77ea9ac5df0a877
  locked: true
  schema_version: 3
  solution: false
  task: false
slideshow:
  slide_type: '-'
---
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
```

+++ {"slideshow": {"slide_type": "subslide"}}

#### Calcul

```{code-cell} ipython3
---
slideshow:
  slide_type: '-'
---
G = examples.parcours_directed()
parcours_visualisation(G, "A")
```

+++ {"nbgrader": {"grade": false, "grade_id": "cell-59f5a82baa8c62f1", "locked": true, "schema_version": 3, "solution": false, "task": false}, "slideshow": {"slide_type": "fragment"}}

#### Visualisation

```{code-cell} ipython3
---
slideshow:
  slide_type: '-'
---
player
```

+++ {"slideshow": {"slide_type": "slide"}}

<img src="media/jupyter.png" width="65%" align="right" style="opacity:0.8;filter:alpha(opacity=100);"/>

## Jupyter?

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

pour **le calcul avec l'humain dans la boucle**

+++ {"slideshow": {"slide_type": "subslide"}}

### Innovations

- Technologies web modernes  
  $\Longrightarrow$ ubiquité, ...
- Libre, ouvert, interopérable  
  Julia, Python, R, C++, et des dizaines d'autres langages et systèmes
- Très modulaire

+++ {"slideshow": {"slide_type": "fragment"}}

### 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](https://aws.amazon.com/fr/sagemaker/), [Google Colaboratory](https://colab.research.google.com/), Microsoft Azure Notebooks, Bloomberg BQuant, Intel Trusted Analytics Platform, IBM Watson Studio, [Saturn Cloud](https://saturncloud.io/), noteable.io

+++ {"slideshow": {"slide_type": "slide"}}

### 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

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

- ACM Software System Award'17
- [The Virtual Research Environment](https://vre-hub.github.io/) by CERN and EOSC: based on Jupyter
- Déploiement national Calysto au Canada
- Initiative [Notebook Now](https://data.agu.org/notebooks-now/) de l'American Geophysical Union, ...

+++ {"slideshow": {"slide_type": "subslide"}}

### 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'exploration
- **Flexibilité**  
  n'importe où, n'importe quand, sur n'importe quel terminal  
  $\Longrightarrow$ **hybridation**, publics empêchés

+++ {"slideshow": {"slide_type": "subslide"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

2006: TED talk [The best stats you have ever seen](https://www.youtube.com/watch?v=jbkSRLYSojo) de Hans Rosling

+++ {"slideshow": {"slide_type": "fragment"}, "user_expressions": []}

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

+++ {"slideshow": {"slide_type": "fragment"}}

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

```{code-cell} ipython3
from wealth_of_nation import application
application
```

+++ {"slideshow": {"slide_type": "subslide"}}

## Pouvoir transformant sur la transmission de la science

+++ {"slideshow": {"slide_type": "fragment"}}

Par sa flexibilité, Jupyter romps les silos entre experts et novices, développeurs et utilisateurs, chercheurs, enseignants et apprenants, sup et sco, ...

+++ {"slideshow": {"slide_type": "fragment"}}

Un terreau fertile: dissemination $\longrightarrow$ $\longleftarrow$ exploration et montée en compétences

+++ {"slideshow": {"slide_type": "fragment"}}

via les **communautés** et **communs numériques**

+++ {"slideshow": {"slide_type": "fragment"}}

### Ça ne reste qu'un outil!

Explorer, évaluer et partager les bonnes pratiques

+++ {"slideshow": {"slide_type": "slide"}}

## 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++)](https://nicolas.thiery.name/Enseignement/Info111/) L1 Math-Info
    - Le calcul  
      Exemple: [Méthodes Numériques](https://methnum.gitlab.dsi.universite-paris-saclay.fr/)
      en L1-L3 de physique
    - La science des données, l'IA  
	  Exemple: [Initiation à la Science des Données](https://nicolas.thiery.name/Enseignement/IntroScienceDonnees/)
      L1 Math-Info
    - ParcourSup!
- Avec **Python**, C++, SageMath, R, shell, ...
- Depuis: salle TP, services Jupyter@Paris-Saclay, mydocker (Centrale-Supélec), CoCalc

+++ {"slideshow": {"slide_type": "subslide"}}

### Exemple: actions à Paris-Saclay

:::{admonition} Coordination projet Européen H2020 d'e-Infrastructure de recherche **OpenDreamKit** 2015-2019
:class: dropdown

- 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

:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} **Déploiement** et montée en gamme depuis 2017 du service [JupyterHub@Paris-Saclay](https://jupyterhub.ijclab.in2p3.fr/)
:class: dropdown

- 5000 utilisateurs inscrits (1000 hors Paris-Saclay); ~100 utilisateurs quotidiens
- Soutenu par le mésocentre [DataCenter@UPSud](https://www.informatique-scientifique.u-psud.fr/).  

:::

:::{admonition} Animation d'un [groupe d'utilisateurs](https://jupyter.gitlab.dsi.universite-paris-saclay.fr/)
:class: dropdown

- [Espace eCampus «Enseigner avec Jupyter»](https://ecampus.paris-saclay.fr/course/view.php?id=99726#section-0)

:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} Soutien institutionnel à l'innovation pédagogique
:class: dropdown

- 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

:::

+++ {"slideshow": {"slide_type": "fragment"}}

:::{admonition} **Développement collaboratif** de **communs numériques**
:class: dropdown

- Production de ressources pédagogiques
- Contributions à l'écosystème Jupyter: adoption précoce, bonnes pratiques, rapports de bugs, code, ...
- [Travo](https://gitlab.com/travo-cr/travo/) solution
  innovante de gestion des devoirs informatique basée sur les
  forges logicielles, comme [GitLab@Paris-Saclay](https://gitlab.dsi.universite-paris-saclay.fr/).
- Soutenu par le **CMA SaclIA** (2022-):
    - financement interventions d'un ingénieur pédagogique
    - recrutement en cours d'un ingénieur logiciel

:::

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "subslide"}}

## Synthèse

+++ {"slideshow": {"slide_type": "fragment"}}

### 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

+++ {"slideshow": {"slide_type": "fragment"}}

- Une adoption massive qui **transforme** la recherche, l'enseignement, la science

+++ {"slideshow": {"slide_type": "fragment"}}

### La France à la pointe

- JupyterCon 2023 (et 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**, **Rouen**, ...

+++ {"slideshow": {"slide_type": "subslide"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

### Comment pleinement réaliser ce potentiel?

+++ {"slideshow": {"slide_type": "fragment"}}

### 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 conversationnel
- Alors que comparativement Paris-Saclay a des moyens!

+++ {"slideshow": {"slide_type": "fragment"}}

- Pas la bonne échelle!

+++ {"slideshow": {"slide_type": "slide"}}

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

https://candyce.org/

+++ {"slideshow": {"slide_type": "fragment"}}

Proposition de soutien institutionnel national à un mouvement de fond

+++ {"slideshow": {"slide_type": "fragment"}}

Work Package 1 du PEPR d'accélération «Enseignement et Numérique», 12M€, 2023-2027

+++ {"slideshow": {"slide_type": "fragment"}}

### 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€)

+++ {"slideshow": {"slide_type": "subslide"}}

### 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

+++ {"slideshow": {"slide_type": "fragment"}}

- 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»

+++ {"slideshow": {"slide_type": "fragment"}}

- Un outil de recherche

+++ {"slideshow": {"slide_type": "subslide"}}

### 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é!**

+++ {"slideshow": {"slide_type": "subslide"}}

## Conclusion

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

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**,

+++ {"slideshow": {"slide_type": "fragment"}}

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

+++ {"slideshow": {"slide_type": "fragment"}}

en France et au delà.

+++ {"slideshow": {"slide_type": "fragment"}}

Nous sommes prêts (depuis presque deux ans).

+++ {"slideshow": {"slide_type": "fragment"}, "user_expressions": []}

**<center>Allons-y!</center>**
