1. GitHub Classroom

GitHub Classroom automatise la création et le contrôle d’accès de dépôts GitHub pour l’enseignement. GitHub Classroom s’adresse aux étudiants pour récupérer un code de démarrage et aux enseignants pour la collecte des devoirs.

classroom logo

GitHub Classroom est gratuit pour tous. Il est possible aussi de profiter des avantages de GitHub Education (étudiants et enseignants).

classroom education

GitHub est un service web d’hébergement et de gestion de développement de logiciels, utilisant le logiciel de gestion de versions Git.

github logo

Git est un logiciel de gestion de versions décentralisé (DVCS). C’est un logiciel libre créé par Linus Torvalds en 2005. Il s’agit maintenant du logiciel de gestion de versions le plus populaire devant Subversion (svn) qu’il a remplacé avantageusement.

git logo

Sites officiels :

1.1. Créer un modèle de dépôt

Il faut créer préalablement un dépôt (repository) dans GitHub :

classroom create repository

Puis le paramètrer en "modèle" (template):

classroom template repository

1.2. Créer une classe

On commence par créer une nouvelle classe (classroom) :

classroom new

Exemple :

classroom github

On pourra ensuite créer des devoirs (assignments) pour cette classe.

Les étudiants de cette classe :

classroom students

On peut connecter un système de gestion de cours comme Google Classroom ou importer une liste des étudiants au format CSV.

Et les enseignants et administrateurs :

classroom tas and admins

L’onglet Settings permet notamment de connecter un système de gestion de cours comme Google Classroom (afin de récupèrer la liste des étudiants) :

classroom settings

On se connecte à Google Classroom :

classroom connect lms

Et on sélectionne un cours :

classroom connect google

GitHub Classroom récupère la liste des étudiants ce qui facilitera l’attibution des devoirs par la suite.

1.3. Créer un devoir

On peut créer des devoirs (assignments) individuels ou de groupe :

classroom new assignement 1

Pour un devoir individuel, GitHub Classroom nomme les dépôts par le préfixe du dépôt du devoir et le nom d’utilisateur GitHub de l’étudiant. Un devoir de groupe est un travail de cours collaboratif pour des groupes d’étudiants sur GitHub Classroom. Les étudiants pourront travailler ensemble sur un devoir de groupe dans un dépôt partagé, comme une équipe de développeurs professionnels.

On sélectionne ensuite le modèle de dépôt :

classroom new assignement 2

On termine la création :

classroom new assignement 3

On obtient une invitation que l’on peut partager avec les étudiants concernés :

classroom new assignement 4

1.4. Le devoir

L’étudiant accepte le devoir :

classroom accepted assignment

Et il est prêt à "travailler" sur le dépôt :

classroom student ready

GitHub a créé un dépôt privé dans l’organisation :

classroom etudiant organisation

Le nom du dépôt possède en suffixe le nom du compte GitHub de l’étudiant :

classroom repository etudiant

Le dépôt contient une copie du dépôt "modèle" :

classroom repository etudiant vue

L’enseignant reçoit un email confirmant l’inscription de l’étudiant au devoir :

classroom email teacher

L’enseignant "voit" (et peut accèder à) l’ensemble des devoirs étudiants (et l’évolution des commits) et peut récupérer l’ensemble des dépôts (Download Repositories) :

classroom assignement etudiant

Pour récupérer les travaux, GitHub Classroom fournit un assistant pour Windows©, MacOS© et Linux.

classroom assistant 0

Ou directement à partir de l’outil :

classroom assistant 1

On sélectionne ensuite les travaux à récupérer :

classroom assistant 2

On peut préciser le chemin de stockage de l’archive :

classroom assistant 3

On obtient :

classroom assistant archive

1.5. Feedback

Lors de la création du devoir, il est possible d’y associer une Pull Request pour assurer une communication Étudiant/Enseignant sur ce devoir :

classroom new assignement pull request

On reçoit alors un email :

classroom email student

La Pull Request dans GitHub :

classroom pr

Elle permet :

classroom pr feedback

1.6. Extension Visual Studio Code

Visual Studio Code possède une extension dédiée à GitHub Classroom.

classroom vscode extension

Elle permet de parcourir les devoirs et de commencer à travailler dessus. Elle apparaît dans l’onglet de l’extension GitHub et il faut commencer par s’authentifier. La liste des devoirs apparaît alors dans l’arborescence.

1.7. Un devoir avec auto-test

Il est possible de configurer un devoir avec des tests exécutés automatiquement pour chaque soumission (push) de code dans le dépôt.

GitHub Actions exécutera les commandes pour le test automatique dans un environnement Linux contenant le code le plus récent de l’étudiant. Il est possible d’y associer des points pour obtenir une note finale pour le devoir.

Il est possible d’ajouter des tests à la création du devoir ou plus tard en l’éditant :

classroom add test

Il existe deux méthodes distinctes : les tests d’entrée/sortie et les tests de commande d’exécution.

classroom choix test

Un test de commande d’exécution :

classroom test run

Un test d’entrée/sortie :

classroom test io

On peut suivre l’exécution du test dans GitHub Actions :

classroom result actions success

Et dans Classroom :

classroom result student success

Ici, le test n’est pas passé :

classroom result student fail

Les détails dans GitHub Actions :

classroom result actions fail

Pour les tests de commande d’exécution, il est intéressant d’y associer des tests unitaires.

Il y a une exemple fourni pour C++ avec make et Catch2.

classroom autograding