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

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

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

+++

<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

+++

16 mars 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 document présente rapidement Jupyter, Candyce et l'implication de
Paris-Saclay dans Candyce.

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

## Au programme

1. Carnets numériques et Jupyter
2. Utilisation à Paris-Saclay
3. Candyce
4. Implication de Paris-Saclay dans 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"}}

### Innovation

- Technologies web modernes
- 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"}}

- Exemple: initiative [Notebook Now](https://data.agu.org/notebooks-now/) de l'American Geophysical Union
- Exemple: analystes financiers dans les banques

```{code-cell} ipython3
---
slideshow:
  slide_type: fragment
---
from wealth_of_nation import application
application
```

+++ {"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": "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"}}

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

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

- **Déploiement** et montée en gamme depuis 2017 du service
  [JupyterHub@Paris-Saclay](https://jupyterhub.ijclab.in2p3.fr/)  
    - Soutenu par le mésocentre [DataCenter@UPSud](https://www.informatique-scientifique.u-psud.fr/).  
    - 5000 utilisateurs inscrits; ~100 utilisateurs quotidiens

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

- Communauté d'utilisateurs :
    - Groupe informel d'utilisateurs [Jupyter@Paris-Saclay](https://jupyter.gitlab.dsi.universite-paris-saclay.fr/) ([Espace eCampus «Enseigner avec Jupyter»](https://ecampus.paris-saclay.fr/course/view.php?id=99726#section-0))

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

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

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

- **Développement collaboratif** de **communs numériques**:
    - Production de ressources pédagogiques
	- Contributions à l'écosystème Jupyter
    - [travo](https://gitlab.info.uqam.ca/travo/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 à venir d'un ingénieur logiciel

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

- Prix: Distinguished Jupyter Contributor

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

## 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 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 l'enseignement, la recherche

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

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

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

### Paris-Saclay à la pointe

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

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

https://candyce.org/

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

Un soutien institutionnel à 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é $\longrightarrow$ 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
- 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

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

### É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: QuantStack
- **France 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é!**

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

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

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

- **juin 2021-** montage avec longues interactions avec SGPI et ministères sup et sco

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

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

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

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