Défier un adversaire
Objectifs de la séance
Dans cette séance, nous introduisons un adversaire dans le labyrinthe. Votre objectif est de créer un programme qui gagnera contre lui. Pour atteindre cet objectif, nous vous présentons quelques notions de théorie des jeux combinatoires. Ce n’est qu’une piste possible pour vous donner des idées, mais vous pouvez choisir n’importe quelle solution !
Important
Le contenu de cette séance sera évalué. Consultez les détails à la fin de cette page.
Avant le cours
Pré-requis
- Réfléchissez à comment vous pourriez battre un adversaire dans PyRat. Notez vos idées, des algorithmes, des stratégies, etc.
- N’oubliez pas, vous devez soumettre votre livrable pour la séance 5 avant le début de la présentation finale !
Articles à étudier
-
Dans cet article, nous vous présentons quelques éléments de la « théorie des jeux ».
-
Dans cet article, nous vous expliquons comment trouver les positions gagnantes dans un jeu, c'est-à-dire, comment trouver des configurations qui mèneront sûrement à la victoire.
-
Ces quiz sont là pour vous permettre de vérifier que vous avez compris les articles à étudier.
Pendant le cours
Quiz Wooclap
Comme pour les autres cours en classes inversées, nous commencerons la séance par un petit quiz Wooclap pour vérifier votre compréhension des notions, et discuter de vos interrogations. Le lien sera fourni par les enseignant(e)s dans votre classe.
Attribuer les rôles
La séance 6 est évaluée. Comme mentionné sur la page principale du projet, chaque membre du groupe sera évalué sur des aspects différents. Contrairement aux livrables précédents, cette fois-ci, vous serez évalué(e)s via une présentation orale.
Pour un trinôme, si vous étiez responsable du code pour le rendu précédent, vous devenez responsable de la documentation pour cette présentation. L’ancien(ne) responsable de la documentation devient responsable des tests unitaires, et l’ancien(ne) responsable des tests unitaires devient responsable du code.
Information
Si vous êtes un binôme ou quadrinôme, veuillez SVP contacter les enseignant(e)s pour une adaptation des rôles.
Activité pratique
-
Dans cette activité, vous écrirez un programme PyRat qui affronte un adversaire dans un labyrinthe.
Après le cours
Présentation finale
Ce qui est évalué
Cette séance est évaluée. Lors de l’examen final, vous devrez faire une courte présentation pour répondre à la question suivante :
Comment pouvez-vous vaincre un adversaire dans une partie de PyRat ?
La modalité d’évaluation est décrite sur la page principale du projet.
Consignes
Votre présentation doit respecter les points suivants (évalués) :
- Elle doit durer 10 min.
- Vous devez préparer des diapositives.
- Chaque étudiant(e) du groupe doit parler pendant une durée approximativement égale.
- Nous poserons ensuite des questions pendant 5 min.
Important
Avant le début de la présentation finale, l’étudiant(e) en charge de la documentation doit déposer les diapositives du groupe au format PDF sur Moodle, dans le devoir correspondant à la présentation finale. C’est par ce devoir que nous vous transmettrons vos notes.
Concernant le contenu, nous vous demandons de présenter votre stratégie pour vaincre un adversaire. Vous n’avez pas besoin d’avoir un code fonctionnel pour atteindre cet objectif. Nous voulons évaluer votre inventivité et votre capacité à concevoir des solutions pour un problème donné.
Voici un plan possible pour votre présentation. Ceci n’est qu’un exemple, n’hésitez pas à ajouter d’autres points. En particulier, si vous avez codé une stratégie, faites une démonstration !
-
Introduction
- Qui est responsable de quelle partie ?
- Quel est le plan de votre présentation ?
-
Travaux connexes
- Introduisez les éléments spécifiques dont vous avez besoin pour présenter votre stratégie (des algorithmes vus en cours, des bibliothèques utiles, etc.).
- Des définitions nécessaires pour comprendre la suite ?
-
Une stratégie possible
- En quoi consiste votre stratégie ?
- Pourquoi pensez-vous qu’elle est intéressante ?
-
Éléments algorithmiques et de code
- Quel algorithme pour réaliser cette stratégie ?
- Quelles structures de données et algorithmes spécifiques sont nécessaires ?
- Quelles fonctions avez-vous identifiées ?
-
Comment évaluer la stratégie
- Quels tests devez-vous effectuer pour évaluer si votre stratégie est bonne contre un adversaire ?
- Quels tests unitaires sont importants pour valider votre code ?
-
Conclusions & perspectives
- Quels sont les points forts, les limites et les améliorations possibles de votre stratégie ?
Les responsabilités
Voici comment les responsabilités s’appliquent dans cette présentation finale :
-
Étudiant(e) en charge de la qualité du code — Cet(te) étudiant(e) doit aborder la partie de la présentation sur les éléments algorithmiques et de code.
-
Étudiant(e) en charge des tests unitaires — Cet(te) étudiant(e) doit aborder la partie de la présentation sur l’évaluation de la stratégie.
-
Étudiant(e) en charge de la documentation — Cet(te) étudiant(e) doit assurer la qualité des diapositives et la clarté de la présentation. Il/elle doit aussi déposer les diapositives au format PDF sur Moodle avant la présentation.
Remarques très importantes
-
Rappelez-vous que nous évaluons votre créativité et votre capacité à formaliser un problème ici. Vous n’avez pas besoin d’un programme fonctionnel pour réaliser ce que vous présenterez. Par conséquent, soyez inventif(ve)s et n’hésitez pas à explorer des idées ambitieuses ! Si vous avez développé du code (une stratégie, des outils pour l’évaluer, etc.), vous pouvez bien évidemment faire une démo, montrer des résultats, etc. Une implémentation n’est pas évaluée en tant que telle, mais tout ce qui rend votre stratégie concrète (modèle, pseudo-code détaillé, ébauche d’implémentation, exemple déroulé pas à pas, démonstration, mesures, etc.) est valorisé dans la grille d’évaluation ci-dessous.
-
Veuillez vous concentrer sur une seule stratégie possible, même si vous avez eu beaucoup d’idées. Cela est nécessaire pour respecter le temps requis de 10 min.
-
Planifiez une répétition. Il est important de vous assurer que vos diapositives sont facilement lisibles et s’affichent bien sur un vidéoprojecteur. Cela relève de la responsabilité de l’étudiant(e) en charge de la documentation.
-
Évitez de projeter du code, personne ne le lit pendant les présentations. Si vous avez vraiment besoin de mettre en évidence des éléments de code spécifiques, veuillez vous concentrer uniquement sur eux. Par exemple, montrez seulement le nom de la fonction et les arguments, etc.
Grille d’évaluation
Comme indiqué sur la page principale du projet, l’évaluation comporte une partie commune et une partie différenciée. Pour fournir une note pour ces différentes parties, nous allons utiliser la grille suivante :
| Partie globale (G) | Points |
|---|---|
| Chaque membre du groupe s’exprime pendant une durée comparable | / 2 |
| La présentation répond à la question posée, en se concentrant sur une seule stratégie | / 2 |
| Les réponses aux questions sont pertinentes et précises | / 4 |
|
La stratégie tient réellement compte de l’adversaire anticipation de ses déplacements, réaction à son comportement, et pas seulement un ramassage de fromages plus rapide |
/ 2 |
| Temps non respecté -1 par tranche de 2 minutes entamée, en trop ou en moins |
-1 / 2 min |
| Total (G) | / 10 |
| Partie code (C) | Points |
|---|---|
| La stratégie est pertinente et originale | / 5 |
|
La stratégie s’appuie sur des éléments algorithmiques algorithmes vus en cours, algorithmes existants, nouveaux algorithmes, améliorations |
/ 5 |
|
Les choix sont explicités et justifiés alternatives envisagées, compromis retenus |
/ 4 |
|
Les structures de données et les fonctions/méthodes nécessaires sont identifiées rôle, entrées et sorties de chacune, et articulation avec preprocessing et turn
|
/ 4 |
|
La complexité est estimée et confrontée aux contraintes du jeu temps disponible pour preprocessing et pour chaque tour, taille du labyrinthe, nombre de fromages
|
/ 3 |
|
La stratégie est rendue concrète modèle, pseudo-code détaillé, ébauche d’implémentation, prototype… une implémentation n’est pas attendue mais est un plus |
/ 4 |
| Total (C) | / 25 |
| Partie documentation (D) | Points |
|---|---|
|
Les diapositives sont lisibles et bien construites plan, numérotation, peu de texte, lisibles au vidéoprojecteur |
/ 6 |
| Le discours est clair et structuré, avec un fil conducteur facile à suivre | / 6 |
|
La stratégie est illustrée visuellement schémas, captures de parties, déroulé sur un labyrinthe, arbre de jeu |
/ 5 |
|
Les notions nécessaires sont introduites avant d’être utilisées travaux connexes, définitions, algorithmes et bibliothèques utilisés |
/ 4 |
|
Le code n’est pas projeté tel quel seuls les éléments utiles sont mis en avant (signatures, pseudo-code) |
/ 2 |
|
Les résultats sont présentés de manière lisible tableaux, graphiques ou schémas, avec légendes et unités |
/ 2 |
| Total (D) | / 25 |
| Partie tests (T) | Points |
|---|---|
|
Un protocole d’évaluation de la stratégie est proposé adversaires de référence, nombre de parties, paramètres des labyrinthes, métriques (taux de victoire, fromages attrapés, temps de calcul…) |
/ 5 |
|
Des résultats concrets sont présentés, mesurés ou anticipés parties jouées contre des adversaires (joueurs aléatoires, glouton, etc.), ou comportement attendu sur des cas simples déroulés à la main |
/ 6 |
|
Les résultats sont analysés avec du recul variabilité entre parties, significativité statistique, situations où la stratégie perd |
/ 4 |
| Les forces et faiblesses de la stratégie sont identifiées, avec des pistes d’amélioration | / 5 |
|
Des tests unitaires pertinents sont identifiés pour valider le code fonctions à tester, cas nominaux et cas d’erreur |
/ 5 |
| Total (T) | / 25 |
Le tournoi PyRat
Après l’examen final, il y a un créneau horaire dédié pour un tournoi PyRat. Veuillez consulter la page du tournoi pour plus de détails !