Bilan octobre 2022 #
Avancement actuel #
Brouillons sur codelescartes.ca
:
Matériel de mon cours 3C6 développé pour ce projet et qu’il reste à inclure dans le manuel codelescartes.ca
:
Matériel qui existait déjà pour mon cours 3C6 et qu’il reste à inclure dans le manuel codelescartes.ca
:
Ressources trouvées par Valérie Jacques #
Les ressources ci-dessous pourront servir d’inspiration pour le manuel :
- Algorithms and Data Structures With Application to Graphics and Geometry (2011) de Jurg Nievergelt et Klaus Hinrichs
- Data Structures : {fundamental tools} (revisé en 2020) de Alfred V. Aho, Jeffrey D. Ullman et al. [Wikibooks]
- Introduction to Programming Using Java (8 éd., 2022) de David J. Eck
- Java, Java, Java : Object-Oriented Problem Solving (2017) de Ralph Morelli et Ralph Walde
- Programming Fundamentals : A Modular Structured Approach (2e éd., 2018) de Kenneth Leroy Busbee et Dave Braunschweig
- Think Java : How to Think Like a Computer Scientist (2e éd., 2020) de Chris Mayfield et Allen Downey
Pour l’instant, il n’est pas prévu de traduire des sections des ressources ci-haut dans le but des intégrer au présent manuel.
Pour finaliser le projet #
L’objectif pour février 2023 est de rédiger 25% du manuel initialement prévu, soit environ 50 pages.
L’objectif demeure réaliste :
Le matériel créé pour ce projet compte déjà environs 20 pages.
Le matériel que j’ai déjà compte pour un autre 20 pages.
À noter que cette portion du manuel risque d’être partiellement réécrite puisque l’approche a encore besoin d’être peaufinée.
Impressions et réflexions #
Ce qui fonctionne bien #
C’est très agréable d’utiliser les cartes surdimensionnées pour expliquer une procédure au tableau blanc :
Crédit photo : Mikael Tardif
C’est aussi très agréable de faire des séances de théorie 100% au tableau blanc, sans utiliser le projecteur.
Les étudiant·e·s semblent apprécier l’utilisation de cartes à jouer et adhérent bien à l’idée de faire des entrevues formatives :
- Durant l’entrevue formative, l’étudiant.e démontre sa compréhension de la théorie avec des cartes ou en dessinant un schéma sur papier
Les étudiant·e·s semblent beaucoup apprécier l’outil de validation, en particulier le fait que l’outil génère des visualisations à partir de leur code. P. ex. :
cartes = new MaCarte[] {new MaCarte(1, Sorte.CARREAU), null, new MaCarte(1, Sorte.COEUR)}; memoireA = null; memoireB = new MaCarte(1, Sorte.TREFLE); i = 1; aDeplacer = 2;
Ce qui reste à peaufiner #
Tout ! L’approche a besoin de « vivre un peu ». P. ex. :
Plusieurs étudiant·e·s ont pris du temps à comprendre que l’outil de validation génère des visualisations à partir de leur code. Il faudra trouver des façons de présenter cet aspect plus directement (d’autant plus que c’est un aspect très apprécié une fois découvert !).
Les étudiant·e·s ont trouvé facile de trier des cartes, mais plus difficile de traduire en code la procédure. Je pense que je devrais fournir plus d’exemples plus rapidement afin de pratiquer cette traduction.
Malheureusement, pour l’instant, créer un nouvel exemple de visualisation est difficile et long. Je dois écrire beaucoup de code pour créer les visualisations et ces dernières doivent quand même être capturées à la main avec un outil de capture d’écran. Certains graphes d’objets doivent aussi être retravaillés à la main. P. ex. le graphe ci-dessous a été retravaillé pour y inclure la variable
nouvelleTete
:
Trois « intuitions de programmeur » à mieux enseigner #
Construire et imaginer un graphe d’objets.
Utiliser une variable de type « curseur » pour pointer sur différents objets d’un graphe d’objets durant l’exécution du programme.
Utiliser des appels récursifs pour construire un graphe d’objet.