A3P / IPO

A3P = Apprentissage Par Problème de la Programmation (IGI-3007 pour les E3ST)
IPO = Introduction à la Programmation Objet (IGI-1202 pour les E1)

I. Pédagogie différente :

II. Profil des étudiants :

II.1

II.2

II.3
Il faut donc être prêt à répondre de nombreuses fois aux mêmes questions sans avoir l'air de reprocher leur ignorance aux étudiants. Il faut même solliciter les questions si certains étudiants ne se manifestent jamais.

II.4
Dans la plupart de leurs autres matières, les étudiants font les TP en binôme. Ici, ils seront volontairement un seul par poste pour les forcer tous à réellement essayer de faire ce qu'on leur demande, et non se contenter de regarder leur copain (quand ils ne se mettent pas à parler ou bien à naviguer sur leur smartphone ...).
Tant qu'il y a un poste de libre (éventuellement sur 2 salles contigües), obligez-les à se séparer et à ne pas s'agglutiner avec 3 ordinateurs portables sur le même table.
Lorsqu'ils utilisent les postes de l'école, incitez-les à utiliser Linux, non pas pour la ligne de commande qu'ils n'ont pas encore apprise, mais simplement pour se familiariser avec ce système qu'ils craignent.
S'il manque des postes, demandez à ceux qui ont apporté leur pc personnel de l'utiliser. Au pire, dans une salle de 13 postes, il faut qu'au moins la moitié des étudiants aient apporté leur portable (il est rare que ce ne soit pas le cas).
En cas d'absence d'un intervenant, vous pouvez être obligé de vous déplacer sur les 2 salles contigües ; dans ce cas, me le signaler au plus tôt.

III. Réponses aux questions :

III.1
Ils ne peuvent réellement apprendre (c'est-à-dire retenir) quelque chose que s'ils l'ont eux-mêmes "trouvé". Aussi, il ne faut jamais leur dire ce qu'ils doivent taper, mais leur faire "deviner" en leur donnant suffisamment d'indices, ou en leur posant une question qui leur fait comprendre la similarité avec une situation qu'ils connaissent déjà.
Par exemple, s'ils vous demandent comment appeler la méthode sqrt :
- ne pas leur répondre "Math.sqrt(x)"
- mais leur répondre "Comment appeler une méthode statique quand on sait à quelle classe elle appartient ?"
Si vous perdez patience après 2 ou 3 échanges infructueux sur le même sujet avec le même étudiant, vous pouvez lui indiquer la solution, mais le mieux reste de lui montrer où cette solution est écrite ou expliquée.
L'essentiel est de vous assurer que l'étudiant obtient toujours la réponse à sa question, éventuellement en plusieurs fois.
Ne pas rester trop longtemps avec un même étudiant (< 5mn ?), car les autres finissent par ne plus appeler l'intervenant.

III.2
Ils ont le droit de communiquer (à voix basse) avec leurs voisins (éviter qu'ils soient souvent debout), mais ils ne doivent absolument pas regarder la solution sur l'écran d'un autre : ils auraient alors perdu la possibilité d'apprendre/mémoriser ce qui était souhaité dans l'exercice considéré. Il faut aussi répéter aux étudiants qu'ils peuvent aider un camarade, en lui expliquant quelque chose, mais jamais en lui donnant ou montrant la solution.

III.3
Essayez de repérer ceux qui n'appellent jamais : cela fait partie de votre mission d'aller voir leur travail et de leur signaler ce qui ne va pas dans leur code ou s'ils partent sur une trop mauvaise piste.
Passer voir systématiquement tous les étudiants permet aussi de constater l'avancement du groupe et de chacun.
Ne pas laisser partir un étudiant qui a soi-disant tout terminé sans avoir vérifié son code (Est-ce bien programmé ? Et les conventions de nommage sont-elles respectées ?).

III.4
Il est bien sûr essentiel de ne pas répondre quelque chose de faux : quand vous ne savez pas, il faut dire "Je ne sais pas.". Il y a toujours un collègue dans votre salle ou une salle contigüe. Si personne ne sait, envoyez-moi un mail (ou un sms), et en dernière extrémité, dites simplement à l'étudiant de me poser plus tard la question en 5356 ou par mail.

IV. Organisation de l'unité :

IV.1
Étalée sur plusieurs mois, cette unité est découpée en séquences, chacune autour d'un thème, plus un projet qui se déroule en parallèle.
Chaque séquence se décompose généralement en : TP + TD + Pers + Cours, mais il y a des variantes, plus les TP de projet.

IV.2
Toutes les ressources et le séquencement se trouvent soit sur Moodle, soit sur ma page web (selon les années) sauf les corrigés qui vous seront envoyés par mail.
Les énoncés pourront légèrement évoluer par rapport aux anciennes versions.
Il est indispensable d'avoir sur vous pendant les TD/TP les sujets (pour pouvoir noter les coquilles/problèmes/ambiguïtés), ainsi que les corrigés (pour savoir ce qui est attendu dans chaque question).
Lorsqu'ils vous sont envoyés suffisamment à l'avance, je souhaite que vous lisiez les sujets et les corrigés avant la séance pour me faire remonter les éventuelles incompréhensions, ambiguïtés, erreurs ou ommissions.
Je suis également très friand de toutes vos remarques et suggestions après une séance, et en particulier de toute correction que je pourrais effectuer avant que d'autres groupes d'étudiants ne soient concernés.

IV.3
Lorsque l'unité est sur le Moodle de l'université :
- Vous y avez accès en tant qu' Enseignant non éditeur.
- Chaque séance apparaît dans la bonne semaine calendaire sur la page principale et renvoie à un article de forum pour son contenu, ce qui permet aux étudiants de simplement y répondre pour poser une questions s'y rapportant. Je vous invite naturellement à participer à ces discussions.
- Compte tenu du nombre élevé d'étudiants en E1, je souhaiterais que chacun(e) d'entre-vous s'inscrive aux forums au moins sur la période janvier-avril, et réponde aux questions si je ne les ai pas encore vues. Si vous ne répondez pas exactement de la manière que j'aurais souhaitée, je posterai simplement un message pour compléter votre réponse.

IV.4
Vous devrez saisir les absences et retards dans Aurion (WebAurion, Scolarité, Mon planning, cliquer sur le créneau, Apprenants, ne pas oublier de valider), soit avant la fin de la séance, sinon avant la fin de la journée ; c'est par cette même connexion que vous attestez de votre présence à la séance prévue dans votre emploi du temps.
Dans le cas d'un départ prématuré de certains étudiants, noter le nombre de minutes manquantes dans la colonne "Retard".
Dans le cas où un étudiant refuse de faire le travail prévu pour le TP considéré, après le lui avoir demandé explicitement, vous devez le noter absent et me le signaler.
Si un étudiant a TOUT terminé (y compris les parties indiquées à terminer en travail personnel), et qu'il vous a appelé pour que vous vérifiiez son code, et que vous ne trouvez rien à lui faire améliorer, il peut partir en avance.

IV.5
Il est fortement conseillé de vérifier son emploi du temps une semaine à l'avance, car il peut arriver qu'une modification ne soit pas signalée explicitement, et de le revérifier la veille car au moins la salle a pu changer.
Merci de me prévenir aussitôt en cas d'absence d'un intervenant : je peux peut-être le remplacer au pied levé, et s'il a un autre TP après, je peux l'appeler pour qu'il arrive.
Rappel sur ADE : choisir l'utilisateur lecteur1 sans mot de passe, puis taper son nom dans le champ de recherche (des CTRL-clics bien choisis permettent de sélectionner plusieurs jours ou semaines).

V. Vocabulaire :

VI. Les salles à partir de 2021/2022

VII. Le projet :

Il s'agit du projet Zuul proposé dans le livre Objects First with Java, projet remanié au fil des années pour aboutir à la Liste officielle des exercices que les étudiants doivent suivre scrupuleusement.
L'objectif de ce projet n'est pas le jeu obtenu à la fin, mais plutôt d'apprendre plus de Java et notamment la conception objet qu'on ne peut pas apprendre sur de "petits" TP.
Le moteur de jeu sera construit pas à pas dans les TP 3.1 et 3.2, puis les élèves devont développer leur projet essentiellement en dehors des heures planifiées.
Vous devez aussi vous inscrire à l'unité Zuul pour avoir accès à tous les détails.

VIII. Les logiciels :

Chaque intervenant doit se familiariser avec BlueJ, notamment l'inspecteur, le debugger, le code pad, et l'exécution de tests unitaires. Il y a suffisamment peu de menus pour pouvoir les regarder tous.
Il est nécessaire de demander l'affichage des numéros de ligne dans les préférences. La complétion de code existe avec CTRL-SPACE, mais n'est pas forcément utile aux étudiants à ce stade. On peut arrêter une boucle infinie en cliquant-droit en bas à droite de la fenêtre.
Si un étudiant a choisi le français dans BlueJ, lui conseiller de repasser en anglais (nécessite le redémarrage de BlueJ, mais on ne perd rien), car c'est un bon moyen d'apprendre du vocabulaire.

Pour le bon fonctionnement de l'unité, il est nécessaire de lire vos mails tous les jours, et de rediriger votre mail esiee sur la boîte que vous lisez le plus souvent.
Si vous désirez malgré tout ne pas utiliser l'adresse @esiee.fr, merci de me le dire.

IX. Le langage Java

Il est bien évident qu'on ne peut tout enseigner et que des choix ont dû être faits. Plusieurs techniques ou concepts ne sont vus que dans le projet, et pour certains, pas du tout (exemple dans l'ex-A3P en E1).
D'autre part, certains partis-pris sont inévitables dans le vocabulaire employé (3 sortes de méthodes par exemple) et dans ce qui est considéré comme de la "bonne programmation".
La lisibilité est toujours favorisée par rapport à la concision. Le seul ennemi absolu est la duplication de code.
Enfin, des "obligations pédagogiques" s'ajoutent aux contraintes du compilateur et au Guide de style classique, notamment le nommage des variables (a,p,v), this., final, @Override, etc.
Ces obligations leur permettent d'éviter certaines erreurs qu'ils ont du mal à trouver : this. systématique évite de redéclarer un attribut dans un constructeur, final systématique évite d'inverser l'ordre d'une affectation, @Override systématique évite les erreurs de paramètre, voire de nom de méthode, etc... et (a,p,v) systématique en début de variable leur permet de mieux comprendre ce qu'ils manipulent.
Si vous voulez voir à quoi resssemble le code avec toutes ces conventions, cliquez sur "Tout Déployer" ici.

Je suis bien entendu à votre disposition pour toute question sur cette unité ou sur Java.

Denis BUREAU (5356)