Github classroom - un outil à tester
Tags: github, teach
Published: 2020-04-08 10:20:23

---
title: Github classroom - un outil à tester
published: true
date: 2017-03-25 00:00:00 UTC
tags: github, teach
canonical_url: https://slashgear.github.io/fr/github-classroom/
---

 **Lorsque j’ai commencé à enseigner en septembre dernier, je recherchais une solutionpour pouvoir suivre facilement l’avancée des étudiants pendant leur TP. J’ai d’abord songé à leur demander l’accès à leur repository Github/Bitbucket… mais je me suis vite rendu compte que çan’allait pas être gérable durablement. J’ai alors cherché une solution clé en main.**

Je suis alors tombé au hasard de mes recherches sur le forum de la [communauté desenseignants sur Github](https://education.github.community). Une communauté très active et dont le sujetprincipal de discussion est **Github classroom**. J’ai alors décortiqué cette solution proposée par Githubafin de la tester au plus vite avec mes étudiants.

# [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#constat-en-tp-on-est-tr%C3%A8s-mal-%C3%A9quip%C3%A9)Constat, en TP on est très mal équipé

Avant de vous décrire le fonctionnement et la mise en place de cet outil avec vos étudiants,je préfère faire une petite liste des problèmes que j’ai pu rencontrer en tant que professeurou même en tant qu’étudiant lors de la réalisation d’un TP.

- **Démarrer votre TP en 5 minutes avec vos étudiants, impossible.** Il est clair que passer une clé usb de PC en PC pour distribuer soit les sources du TP soitle sujet ce n’est pas pratique. On observe facilement que certains étudiantsne commencent alors leur TP qu’au bout de 15/20 minutes.
- **Difficile de suivre l’avancement des étudiants.** Il arrive que des étudiants souhaitent avoir de l’aide pour résoudre un problèmeavec leur projet. Sans outils, on est souvent obligé de faire de nombreux échanges parmail pour finir par se comprendre et réussir à apporter son aide. Se contextualiseren lisant un mail où l’élève lâche juste un _ça marche pooo !_, c’est pas très facile.
- **Le rapport, le code du projet, les mails d’échanges avec les étudiants, à des endroits différents.** Le rendu du TP, il faut l’avouer c’est vraiment l’étape la plus énervante.Entre les étudiants qui oublient la moitié des choses à rendre, les retards,les outils de la faculté qui ne marchent pas, centraliser et noter les travaux pratiques des étudiantsdevient vite un véritable calvaire que l’on traine sur plusieurs jours.
- **_“Non Monsieur j’ai pas copié” :_** Trop de fois les étudiants se Ctrl-C/Ctrl-V les TPs et cela peut êtretrès compliqué de vérifier qu’un étudiant n’a pas juste recopié le code de son collègue.
- **_“Et toi t’as fait quoi sur ce TP ?”_** Et oui, parfois, quand les étudiants sont en groupe, un fainéant peut se cacher au milieu.Il est donc difficile d’évaluer réellement la compréhension individuelle dans cette situation.
- **Comment vérifier que leur TP marche ? Dois-je l’installer ?** 40 élèves, TP par binôme, cela fait 20 TP à installer et à vérifier. Il arrive que l’élève aitconfiguré son projet un peu bizarrement et il vous faudra au moins 10 minutes pour comprendrece qu’il a fait.

# [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#pr%C3%A9parer-un-tp-avec-github-classroom)Préparer un TP avec Github Classroom

Alors déjà pour être clair, utiliser un outil comme **Github Classroom** nécessite du tempsde préparation supplémentaire. Il y a tout un tas de choses à configurer avant la première séanceavec ses élèves. Cependant, ce temps de préparation va être largement récupéré dès que le TP aura commencé.

## [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#un-outil-bien-expliqu%C3%A9)Un outil bien expliqué

Cet outil a une prise en main assez évidente, mais Github nous a quand même fourniplusieurs vidéos explicatives qui suffisent à comprendre son utilisation.

 

> Getting started
> 
>  
> <iframe src="https://www.youtube.com/embed/ChA_zph7aao?ecver=2" frameborder="0" style="position:absolute;width:100%;height:100%;left:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; " allowfullscreen></iframe>

 

 

> How to set up group assignments
> 
>  
> <iframe src="https://www.youtube.com/embed/-52quDR2QSc?ecver=2" frameborder="0" style="position:absolute;width:100%;height:100%;left:0; position: absolute; top: 0; left: 0; width: 100%; height: 100%; " allowfullscreen></iframe>

 

## [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#les-contraintes)Les contraintes

Cet outil n’est pas magique, il impose quelques contraintes qui peuvent êtrebloquantes pour vous et vos étudiants.

- Il vous faut un compte Github
- Tous les élèves doivent avoir un compte Github, il peut être difficile d’imposer ça aux élèves
- Vous devez maitriser Git et bien connaitre l’interface de Github.
- Vos élèves doivent être autonomes avec Git.
- Vous devez créer une organisation sur Github (en quelques clics)
- Les sources des TP et les réalisations de vos étudiants seront publiques si [vousne demandez pas une organisation privée à Github pour votre école.](https://education.github.com/discount_requests/new)

## [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#les-%C3%A9tapes-%C3%A0-respecter)Les étapes à respecter

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#1-pr%C3%A9parer-vos-sources-et-votre-%C3%A9nonc%C3%A9)1. Préparer vos sources et votre énoncé

Il vous faudra tout d’abord déposer vos sources sur un dépot Github enveillant à bien le nommer pour le retrouver par la suite. Il faut aussi veiller à ne pas_marquer_ vos TP par les fichiers de configuration de votre IDE. En effet,vos étudiants n’utiliseront pas forcément le même que vous et ces fichiers pourraient les gêner/les troubler_(il en faut peu)_

Je vous conseille également de rédiger l’énoncé en [Markdown](https://guides.github.com/features/mastering-markdown/)directement dans le fichier `README.md` .

Enfin, histoire de tout centraliser au même endroit, je vous pousse àdéfinir un fichier `Rapport.md` pour que les étudiants rédigent également leur rapport en Markdown.(Après un premier test, les étudiants ont bien apprécié le Markdown. Très simple à comprendre, il leur apermis d’insérer du code mais également des images dans leur rapport sans prêter attention à la mise en page)

Pour terminer, [voici un exemple de TP que j’ai configuré pour mes étudiants.](https://github.com/PolytechLyon/isi3-tp1-graph)

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#2-configurer-votre-assignement)2. Configurer votre _assignement_

Une fois votre TP déposé sur un dépôt Github, il ne vous reste plus qu’à définir une `instance`de TP depuis l’interface de Github Classroom.

[<picture>
        <source srcset="/static/038e52072fd39b5c797e3ffef7dc7148/cbe2e/create-assignement.webp 148w,
/static/038e52072fd39b5c797e3ffef7dc7148/3084c/create-assignement.webp 295w,
/static/038e52072fd39b5c797e3ffef7dc7148/5ca24/create-assignement.webp 590w,
/static/038e52072fd39b5c797e3ffef7dc7148/dad35/create-assignement.webp 885w,
/static/038e52072fd39b5c797e3ffef7dc7148/2baf0/create-assignement.webp 1180w,
/static/038e52072fd39b5c797e3ffef7dc7148/a2081/create-assignement.webp 1962w" sizes="(max-width: 590px) 100vw, 590px" type="image/webp"></source>
        <source srcset="/static/038e52072fd39b5c797e3ffef7dc7148/12f09/create-assignement.png 148w,
/static/038e52072fd39b5c797e3ffef7dc7148/e4a3f/create-assignement.png 295w,
/static/038e52072fd39b5c797e3ffef7dc7148/fcda8/create-assignement.png 590w,
/static/038e52072fd39b5c797e3ffef7dc7148/efc66/create-assignement.png 885w,
/static/038e52072fd39b5c797e3ffef7dc7148/c83ae/create-assignement.png 1180w,
/static/038e52072fd39b5c797e3ffef7dc7148/720e3/create-assignement.png 1962w" sizes="(max-width: 590px) 100vw, 590px" type="image/png"></source>
        <img src="https://slashgear.github.io/static/038e52072fd39b5c797e3ffef7dc7148/fcda8/create-assignement.png" alt="Créer un assignement" title="Créer un assignement" loading="lazy" style="width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;">
      </picture>](/static/038e52072fd39b5c797e3ffef7dc7148/720e3/create-assignement.png)

Quelques petites astuces pour créer vos _assignements_ :

- Bien préciser les classes, groupes, année dans le titre.
- Indiquer votre starter code de l’étape 1.
- Vous pouvez bloquer le nombre maximum d’élèves par groupe.
- Vous pouvez reprendre les équipes entre les différents TP d’une même matière.

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#3-diffuser-votre-tp-%C3%A0-vos-%C3%A9l%C3%A8ves)3. Diffuser votre TP à vos élèves

Cette étape vous fera gagner un temps précieux, en effet, une fois votre _assignement_ créél’outil vous génère un lien qui permettra aux étudiants de s’y connecter et de se regrouper.

Dans le cas des TP en groupe, un étudiant doit s’y connecter et créer son équipe, les autres pourrontensuite la rejoindre.

Un _repository_ sera alors créé par équipe.

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#4-suivre-vos-%C3%A9l%C3%A8ves-dans-leurs-d%C3%A9veloppements)4. Suivre vos élèves dans leurs développements

Vos étudiants vont un peu vous prendre pour la NSA, mais rassurez-les c’est pour leur bien.Une fois les dépots créés, vous pourrez voir sur votre page d’accueil github tous les commitsde vos étudiants. Cela vous permettra de faire de la _review_ au fil de l’eau si vous avez le temps.

Vous pouvez également voir avec eux pour qu’ils ouvrent une _issue_ s’ils ont besoin de votre aide.Dans cette situation vous serez notifié par mail. L’étudiant pourra même vous indiquer dans l’_issue_le code qui lui pose problème.

### [<svg aria-hidden="true" focusable="false" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg>](#5-%C3%A9valuer-leurs-r%C3%A9alisations)5. Évaluer leurs réalisations

Pour l’évaluation vous avez deux solutions :

- Inspecter leur _repository_ et lire leur code. Pour cela je ne peux que vous conseillerl’extension [Octotree](https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc)qui vous permet d’afficher l’arbre des fichiers du dépôt.
- Mettre en place des tests unitaires sur le projet de base et connecter un outil de CI en SaaS comme travis-ci.