Gestion des devoirs informatiques avec GitLab

Nicolas M. Thiéry et al.

Laboratoire de Recherche en Informatique

Université Paris Sud/Saclay

Café LOOPS 8 et 15 décembre 2020

Enregistrement

Un retour d'expérience

À propos de quoi?

La gestion des devoirs «informatique»:

  • TPs, projets, ...
  • Requérant l'utilisation de logiciels:
    • Programmation
    • Calcul scientifique (en maths, physique, ...)
  • Où le sujet et le rendu sont composés principalement de code:
À la recherche d'une meilleure terminologie!

Pour quoi?

Constat: lourdeur de la gestion à la main!

Cadre: explorer quels outils pourraient nous aider?

Objectifs:

  • Gagner du temps et de la qualité: automatisation
  • Mieux suivre nos étudiants
  • Faciliter l'hybridation

Stratégie:

  • Réutiliser le maximum d'infrastructure et de logiciels existants
    Idéalement: juste une collection de bonnes pratiques

Sur quelles populations?

  • Étudiants en L1 math-info, math-physique
    • Nombreux (200)
    • Raisonnablement à l'aise avec l'ordinateur
    • Zéro expérience en programmation, avec Linux, ...
  • Étudiants en master d'informatique
    • Petits effectifs
    • À l'aise avec les outils de développement collaboratifs

Avec qui?

Jérémie Neveu (LAL), Pierre-Thomas Froidevaux, Alexandre Blondin Massé, Jean Privat (UQAM)

et pleins de collègues embarqués de force dans l'aventure :-)

DANGER, EXPÉRIENCE EN COURS !!!

  • État actuel: prototypes, pour des cours spécifiques
  • Janvier: solutions alpha à bidouiller pour les aventureux?
  • Septembre: solutions un peu clé en main?

Pourquoi en parler dès maintenant?

  • Attirer des collaborateurs
  • Urgence avec la gestion distanciel/présentiel/...

Automatiser la gestion des devoirs?

Besoins en infrastructure

Salles de TP virtuelle:

Ce sera pour un autre jour!

Un dispositif d'échange ...

... pour les aller-retours entre enseignants et étudiants:

  • Mail
  • Clé USB
  • Page Web
  • Dossier partagé
  • ENT (par exemple: activité Devoir de eCampus)
  • ???

Spécifications

  • Accessible de partout
    Salle de TP, maison, ...
  • Authentification et contrôle d'accès
    Exemples:
    • aux documents instructeurs
      typiquement: seuls les enseignants
    • à la soumission d'un étudiant
      typiquement: seul l'étudiant et ses enseignants
  • Protection des données personnelles
  • Interface web intuitive
  • Automatisable

Quelques candidats potentiels

ENT (Moodle / eCampus)

  • N'offre rien de particulier pour le code

nbgrader

  • Outil de gestion des devoirs
  • Spécialisé documents Jupyter
  • Correction semi-automatique avec UI efficace
  • Difficulté technique: zone d'échange

CoCalc (Collaborative Calculation)

Infrastructure tout-en-un:

  • Salle virtuelle
  • Gestion des devoirs
  • Intégration de nbgrader
  • Logiciel libre, déployable sur site

Experts locaux: Samuel Lelièvre, Viviane Pons

Déploiement à Paris-Saclay?

Hypothèse

Enseigner la programmation ou le calcul, c'est collaborer sur du code.

Corrolaire: un outil de choix: les forges logicielles

  • Un espace de stockage partagé
  • Avec authentification et gestion des droits
  • Avec traçabilité forte (gestion de version: git)
  • Conçu pour héberger du code
  • Conçu pour la collaboration
  • Conçu pour gérer des processus
  • Très grande souplesse d'utilisation:
    • Interface web riche
    • Automatisation via API

Exemple: GitHub Classroom

  • GitHub: forge logicielle
  • GitHub Classroom:
    • Publication: un devoir = un dépôt git
    • Téléchargement: fork + clone
    • Soumission: pull-request
    • Correction automatique: intégration continue
      • utilitaires de gestion de classe

Proposition: utiliser GitLab?

  • GitLab: forge logicielle libre
  • Possibilité de déploiement sur site:
    • Protection des données personnelles
    • intégration dans le système d'information
  • À Paris-Saclay:
    • https://gitlab.u-psud.fr
    • Déployé par la DI depuis deux ans
    • Montée en puissance progressive:
      • en ressources
      • en fonctionnalités
    • Qualité de service: utilisable, mais sans garanties 7/7 24/24
    • Un grand merci à Marco Leoni pour la maintenance!

Est-ce raisonable?

Pas de GitLab Classroom
Mais des collègues avec qui travailler!
Faire utiliser git à nos étudiants de L1 ?!?
Parfois encore plus ambitieux: aux collègues!
Mitigation:
  • Détourner l'interface web chaque fois que possible
  • Identifier et automatiser les opérations essentielles

Point de vue étudiant

Interface réduite à deux commandes dans le shell:

info-111 fetch <Devoir>

info-111 submit <Devoir> <Groupe>

Détails:

http://nicolas.thiery.name/Enseignement/Info111/devoirs.html

Point de vue enseignant

https://gitlab.u-psud.fr/Info111/

Tableau de bord du cours

Synthèse soumissions

Soumissions des étudiants d'un groupe

Soumission = dépôt personnel d'un étudiant

À noter:

  • Le lien «Forked from» avec le dépôt sujet
  • La pastille d'intégration continue
  • Les dépôts personnels plus récents sont privés

Résumé

Structure type d'un cours

Un cours = un groupe GitLab

Info 111

Quelques autres exemples

Expérimentations en cours

Bénéfices:

  • Pour l'étudiant:
    • auto-évaluation immédiate, autant de fois qu'il le souhaite
    • vérification soumission
    • $\Rightarrow$ motivation
  • Pour l'équipe pédagogique:
    • code étudiant exécuté dans un environnement contrôlé
    • suivi de l'avancement
    • moins de correction à faire
Concevoir des tests pertinents et robustes et un barème est délicat. Passer d'un indicateur à une métrique (note!) requiert quelques itérations.

Quelques outils:

  • pytest
  • nbgrader

À explorer:

  • Rendre plus robuste
    • Prérequis: montée en puissance des ressources notre GitLab
  • Affichage synthétique riche
    • Piste: Intégration GitLab des rapports au format JUnit
    • Prérequis: montée en version de notre GitLab
  • Meilleure intégration avec nbgrader

Intégration avec nbgrader pour la correction manuelle

Démo en local

À faire / explorer:

  • Collecte des devoirs depuis GitLab
  • Correction collaborative
  • Dépôt feedback après correction sur GitLab
  • Où héberger les notes?
  • Intégration eCampus?

Outils:

  • Jupyter Book: génération d'une page web interactive riche à partir de documents markdown, Jupyter, ...
  • GitLab Pages: hébergement
  • Intégration: déploiement automatique

À faire / explorer:

  • Préparer un template
  • Déploiement GitLab pages sur notre instance (fait: merci Marco!)
  • souci technique à régler

Communication avec les étudiants

Forum d'aide

  • Par tickets?

Commentaires

  • Tickets sur les dépôt des devoirs étudiants?

Chat (type discord)

  • Mattermost comme plugin GitLab

Conclusion: utiliser une forge logicielle pour l'enseignement?

  • Une infrastructure pour (potentiellement) beaucoup de nos besoins
  • Complémentarité avec JupyterHub / ENT / ...
  • Très flexible
  • Adoption possible par touches successives
  • Indépendance
  • Effet de bord: former étudiants et enseignants aux outils collaboratifs

Prérequis

  • pour les étudiants: un peu de shell
  • pour l'équipe pédagogique: un peu de git
  • pour le responsable d'UE (ou gestionnaire): encore un peu lourd
  • pour l'institution: déployer et faire monter en puissance un GitLab

Viabilité?

  • 95%: trouver les bonnes pratiques:
    Comment «détourner» cette infrastructure à notre profit
  • 5%: ajouter un peu de poudre magique pour automatiser

Feuille de route

  • Migration de travo vers Python: décembre
  • Généralisation pour quelques autres cours: janvier
  • Interopérabilité nbgrader pour correction manuelle: janvier
  • Automatisation déploiement du cours: ?
  • Exemple de cours (façon cookie-cutter): été prochain

Si on s'y met à plusieurs, on ira vite :-)

Venez jouer avec nous!

(en attendant la mise en place d'un espace collaboratif, contacter Nicolas.Thiery@u-psud.fr)