 Est-ce que vous vous êtes appelé il y a quelques jours quand vous étiez avec vos proches et vous demandez comment est-ce que vous pouviez régler leurs problèmes sur leur ordinateur et si vous avez, est-ce que vous souvenez, les avoir regardé, galérer, essayer de comprendre, imaginez si vous viviez ça tous les jours et que votre passion c'était d'apprendre la programmation. Donc je vous propose d'applaudir pour Mike Spreader pour cette conférence comment apprendre à vos proches la programmation. Merci beaucoup pour l'introduction. Je pense qu'il faut que je montre vos slides. Alors on va parler de passion. Si vous apprenez la programmation, vous savez que c'est très bon pour l'ego parce que vous savez que si vous avez une grande audience, si vous avez apprenez ça à des enfants, si vous avez des enfants, des enfants peuvent être votre audience et ils peuvent vous dire si c'était bien ou pas pour vous donner des retours. Par exemple, moi j'aime bien la programmation fonctionnelle donc ça c'est une lambda qui veut dire la programmation fonctionnelle. Et donc quand j'apprends à des gens souvent des audiences assez larges, à des gens qui ressemblent à ça souvent, souvent ils viennent et ils me disent oh c'est lambda, cette programmation fonctionnelle c'est la chose la plus belle que j'ai jamais entendu parlé et tu es un professeur génial. Et donc ça, donc on parle un peu de moi, ça fait à peu près 30 ans maintenant que j'apprends la programmation à des étudiants dans plein de contextes différents, donc à des lycéens, à des universités, à des collègues même, mais si j'ajoute toute mon expérience à prendre, je me dis que ben en fait quand je regarde dans le passé je me dis que c'était pas, c'est un peu un échec, mais je préférais parler de mes succès que de mes échecs. Si je parle des initiatives qui essayent d'apprendre aux enfants la programmation, on parle souvent de dire aux enfants qui vont devenir très contents, très excités à l'idée d'apprendre, on entend beaucoup de les politiciens dire que les jeunes vont être très contents, c'est le futur ils vont être super heureux d'apprendre et au final on finit dans des salles de classe avec plein de robots comme ça. Les robots donc pour une raison ça va aider les enfants à être très heureux à l'idée d'apprendre la programmation, donc c'est bien et tout ça, mais je me dis qu'au final on s'attend à ce que les gens vont être très contents d'apprendre la programmation mais qu'ils vont réussir à apprendre les choses par eux-mêmes et qu'ils vont essayer, rater, recommencer, mais faire par eux-mêmes. Et donc par exemple il y avait un projet, je sais pas si vous vous rappelez, c'était un ordinateur pour les enfants, c'est une initiative, je sais pas si vous vous rappelez, mais ça fait longtemps qu'on n'est pas vu, même à cette conférence on n'est pas vu et je pense que c'est parce que ce concept d'avoir un ordinateur portable par enfant c'était parce que c'était poussé à l'idée c'était que si on leur donnait accès à internet et des moyens d'apprendre, ils allaient se débrouiller en fait à apprendre par eux-mêmes, c'est le concept. Il y avait plein de problèmes avec cette idée, l'un des problèmes c'était que l'approche de la pédagogie de ça, ça n'a pas vraiment bien marché. Donc on voit des variations de ça, tous les ans il y a toujours une initiative d'éducation très inspirante pour dire il faut la passion, la programmation, l'année dernière on a parlé de ce projet Bob qui était, c'était pour programmer un petit robot et ça il y avait des petites lumières, des choses comme ça donc c'était très intéressant et on a programmé avec, on peut le voir ici, on peut programmer en téléchargeant des petits programmes, des petits morceaux de c++ et on prend les lignes et puis on les change un petit peu puis on peut changer combien ça clignote et ce genre de choses donc ça c'est bien, je ne vais pas dire que c'est pas bien, je pense que c'est très bien et ça va inspirer les gens à avoir de la passion mais tous ces projets ont en commun l'idée que c'est pas apprendre la méthodologie de la programmation et c'est pour ça que cette conférence je vais en parler et donc ça va surement être un peu ennuyeux mais si vous voulez inspirer de la passion aux gens sur la programmation il y a plein de projets qui sont disponibles et surtout aujourd'hui dans la conférence il y en a plein mais voilà le problème c'est que transitionner de ces petits projets et passer à des projets sérieux et faire des choses par soi-même, on se retrouve, on voit que beaucoup de gens sont très frustrés par cette expérience et n'arrivent pas en fait à écrire des programmes plus compliqués et même s'ils ne sont pas forcément plus compliqués, même s'ils ne sont pas forcément frustrés leur code finit par se retrouver à ressembler à ce que vous voyez sur la droite donc c'est pas génial, donc cette conférence c'est beaucoup à propos de essayer et essayer et tout ça donc on voit des choses comme ça mais avec l'apocalypse de l'internet des objets qui apparaît qu'on voit arriver on veut peut-être prendre une meilleure méthode pour faire les choses donc le problème c'est que cette méthode, cette pédagogie ne marche pas forcément donc pour d'entrer longtemps je me disais mais pourquoi est-ce qu'on n'arrivait pas à trouver une meilleure méthodologie pourquoi est-ce que j'ai appris, j'arrivais pas à trouver quelque chose de mieux donc j'ai trouvé un bouquin qui va confirmer mes préjugés en fait que je trouvais hier quand je préparais et donc il y avait un scientifique Daniel Willingham qui a étudié ça et il liste des principes qui sont actifs quand les étudiants apprennent et donc quelque chose qui est très important c'est qu'on a tous cette idée que tout le monde adore apprendre mais en fait apprendre en soi-même c'est quelque chose qui est très difficile et fatigant et donc même si les gens sont très curieux et ont envie de regarder les choses ont envie d'apprendre et d'apprendre et de réussir et du coup ils doivent penser très difficilement et ils doivent se concentrer c'est pas forcément le cas pour tout le monde un autre problème c'est c'est bien sûr un problème quand on transitionne d'un système de programmation très facile comme ces petits jeux qu'on voyait et qu'on voit c'est de programmer avec des vrais outils on voit que c'est beaucoup plus difficile et que c'est très frustrant donc ça c'est les principes que je vois dans le livre donc je vais vous dire exactement ce qu'il y a dans le livre mais je les aime beaucoup donc je vais vous les dire donc les connaissances factuelles sont plus importantes que les compétences apparaissent avant les compétences si on pense aux connaissances factuelles beaucoup des principes de ce qu'on connaît de la programmation n'ont pas vraiment le nom et ils n'ont pas vraiment expliqué avec des notions factuelles et c'est pour ça qu'ils ont beaucoup de mal avec les skills donc j'aime beaucoup celle-là qui dit que la mémoire c'est le reste de nos pensées donc on se souvient des choses auxquelles on pense beaucoup mais pas forcément des autres choses il y a beaucoup de recherche sur les robots donc on est censé utiliser les robots pour utiliser pour que les gens soient passionnés par les robots les gens vont juste se souvenir en fait des robots des moteurs, des petites choses comme ça mais ils ne vont pas vraiment aider à apprendre la programmation en elle-même donc il y a beaucoup d'initiatives comme ça qu'est-ce que les étudiants, on leur a demandé qu'est-ce que les étudiants retiennent de ces classes avec les robots donc maintenant avec ce qu'ils ont dit c'est qu'ils savent qu'est-ce que c'est pillé pour moi c'est pas assez autre chose c'est qu'il y a pas grand chose c'est aussi la façon dont on fait les maths c'est aussi la façon dont on fait le contexte et les choses qu'on connaît déjà on se rend compte que c'est plutôt facile de se souvenir des choses concrètes donc en maths et en informatique beaucoup d'explications sont plutôt vraiment le faire plutôt que de le montrer quelque chose qu'il n'avait pas besoin d'y dans ce livre c'est que l'efficacité demande beaucoup de pratique dans la classe dans un environnement, d'enseignement qui encourage des pratiques qui va vous mener au succès que c'est la partie naturelle, c'est la curiosité naturelle de réussir à résoudre des problèmes des problèmes qui sont pas trop durs mais pas non plus trop faciles parce que sinon ça a pas trop de sens il y a un piège dans lequel beaucoup de gens tombent c'est qu'apprendre quand on est jeune par rapport à apprendre quand on est plus vieux c'est très différent les procès connectifs sont différents en fonction de l'âge et c'est pas parce qu'on trouve des choses intéressantes, des choses qui vous inspirent que vos étudiants les trouvent inspirantes ou intéressantes si vous enseignez des classes avec beaucoup d'élèves les enfants ont tendance à être très similaires dans leur méthode d'apprentissage c'est toujours intéressant d'avoir une classe où les étudiants peuvent être séparés en fonction de leur différence en général, les gens pensent que les gens, certaines personnes sont bon, mat, ou bon d'entrer à l'hôtel à la matière que parfois ça dépend du genre mais il y a quelque chose qu'on dit que l'intelligence peut être changée dans lesquels vous êtes bon, on peut être changé à travers le travail on y travaille beaucoup et on se rend compte que votre accueil en fait n'est pas vraiment corrélé avec ce que vous êtes bon et quelque chose que vous apprenez après avoir enseigné pendant 30 ans c'est que pour vraiment vous améliorer vous devez recevoir des commentaires vous devez recevoir des commentaires sur ce que vous faites sur ce que vous avez réussi et parfois, ce que vous apprenez c'est que ce que vous essayez d'enseigner, ça ne fonctionne pas je pense que la plupart du temps qu'on voit la diversité des gens dans les classes et la diversité qu'on voudrait avoir ça ne fonctionne pas donc on avait une recherche qui est basée sur des méthodes systématiques et donc je vais essayer de vous en parler un petit peu ce que ça veut dire moi aussi quelques références quelques livres, quelques modèles quelques des gens qui ont déjà travaillé sur ces méthodes-là des références je vous en donnerai d'autres tout à l'heure il y a des projets significatifs qui concernent les étudiants du lycée un aspect qui est important dans cette méthode d'enseignement c'est que tous les outils que nous utilisons en particulier ça veut dire que un environnement qui a été fait spécifiquement pour apprendre comparer par exemple quelque chose comme IMAX comme VIM vous avez besoin d'environnement spécifique à l'apprentissage mais aussi des langages de programmation qui ont été modifiés, adaptés pour les gens qui sont en phase d'apprentissage mais aussi des recettes, des méthodes qui peuvent être appliquées encore à chaque fois et à chaque fois pour construire vos programmes des méthodes qui fonctionnent à chaque fois donc il y a par exemple un système qui s'appelle Racket qui a été développé par le groupe PLT qui est bien pour plein de choses mais qui a été l'origine conçue pour l'enseignement donc je vais essayer de vous montrer comment ça fonctionne en direct moi ce système est appelé à Dr. Racket que vous pouvez voir il n'y a pas beaucoup de boutons ça ne te ressemble pas Eclipse ou Visual Studio c'est pas une idée la manière dont ça fonctionne dans la partie du haut de la fenêtre c'est juste un éditeur de texte c'est là où vous allez entrer votre programme et en dessous c'est la ligne de lire, exécuter un rappel une boucle d'exécution, lire, exécuter et au départ vous pouvez juste écrire quelque chose ici et vous aurez directement du retour ok ça va sembler très étrange pour vous et très étranger mais ce langage programme est basé sur l'ISP donc vous allez voir beaucoup de parenthèses en particulier si vous voulez assembler des choses ensemble et si vous avez fait la programme pour longtemps vous allez vous dire oh non je ne vais jamais pouvoir réussir à faire ça par exemple si vous vous entrez juste un nombre vous allez avoir le résultat pareil pour une chaîne de caractère vous pouvez combiner des nombres en les ajoutant ça ressemble à ça une expression composée c'est un peu différent vous ne faites pas ce nombre plus ce nombre la somme de ce nombre bien sûr il n'y a pas les limitations que vous avez dans le langage comme c'est au java mais ici je peux tout de suite entrer des nombres qui sont très très grands et à la même manière que les nombres, les boules sont des valeurs les images sont aussi des valeurs par exemple là je peux créer un rectangle qui est en bleu et voilà j'ai la valeur de ce rectangle en résultat vous pouvez faire quelque chose de vraiment stimulant comme ça en haut on va définir Pi et maintenant j'ai Pi dans l'interprèteur je vais définir mon rectangle que je vous ai montré on va le rendre en rouge cette fois-ci et maintenant on peut lancer ce programme et voilà on a ce rectangle c'est peut-être plus intéressant c'est qu'on va faire un deuxième rectangle bleu donc parenthèse autour du define define c'est que c'est une définition on n'appelle la fonction rectangle qui vient avec Dr. Nacquette maintenant j'ai 1, j'ai RF2 il y a des choses intéressantes comme par exemple il y a une fonction qui prend 2 images et je peux les mettre côte à côte donc vous pouvez faire un peu d'algebra avec les images donc c'est pas dénué c'est pas sans aucun exemple qui c'est motivant d'avoir des images bon alors on va essayer de regarder un peu autre chose que ces images en exemple alors en Allemagne on adore les panneaux de signalisation il y a beaucoup de règles et donc on va pas être intéressant mais on va essayer de modéliser ça donc on va essayer de catégoriser les violations de trafic en Allemagne donc il y a deux catégories les lumières rouges et les feux de signalisation combien de fois, combien de temps après que ça se devienne rouge on a le droit de passer avant de traverser aux rouges et aussi la violation de la vitesse donc combien de kilomètres par heure on est au dessus de la limite donc on va essayer de faire une fonction pour expliquer ces violations et faire des fonctions sur le sujet donc pour faire ça on va utiliser les méthodes de conception dont on a parlé tout à l'heure donc on va en utiliser plusieurs déjà on a les méthodes de conception principales donc c'est celle-là donc on va avoir plusieurs on va demander à nos étudiants de regarder toutes ces étapes et essayer de s'occuper de ces choses-là donc je suis désolé c'est vraiment un peu ennuyeux c'est un peu la façon allemande d'apprendre la programmation mais en même temps mais vous savez, ça marche, ça marche c'est ça l'idée, c'est pour ça qu'on fait ça donc spécifiquement toutes ces petites étapes dont on parle ici sont assez petites pour que les étudiants réussissent et du coup on peut leur donner des images on peut les féliciter et ensuite une fois qu'ils ont fini chaque étape ils peuvent aller à la prochaine étape et si vous avez déjà appris à quelqu'un quelque chose et que ça n'a pas réussi moi ça m'est arrivé quand ça ne marche pas pour moi mes étudiants en fait, ce qu'ils font c'est qu'ils regardent à l'écran avec des yeux dans le vague et je me suis rendu compte que ça m'a arrivé et je me disais comment est-ce qu'on peut faire pour régler ce problème et en fait ils ne vont même pas essayer ils vont arrêter avant même d'avoir tapé une seule touche et je me suis dit que les exemples dans la programmation ce programme peut régler cet problème cet programme peut régler ce problème et en général ça ne marche pas à cette méthode et donc cette séquence d'étapes aide vraiment les étudiants à comprendre et à réussir et donc je sais que ce n'est pas une super idée je comprends que vous ne soyez pas fan de ma méthode mais en même temps je vais vous expliquer et chaque petite étape chaque instruction sont faciles à apprendre et c'est vraiment ça qui est important donc en particulier je vais aller directement dans le vif du sujet si vous regardez ça le problème question la première chose que vous faites c'est que vous faites une courte description de votre fonction puis ensuite ça dit il faut que vous faites une analyse de vos données quels sont les différentes entités de votre programme et analysez-les et regardez-les donc ici c'est tout à propos de la violation du code de la route par exemple vous pouvez violer un feu rouge ok ça a un endroit et une longueur on peut regarder comment cette donnée est décrite ok là je me dis ok cette chose ça correspond de ces deux pièces ou cette chose à ses propriétés là et ce phénomène on peut appeler ça donnée composée compound data par exemple on a une méthode de données ça c'est un outil qui nous permet qu'on enseigne aux étudiants quelque chose qui doit prendre une recette qui est capable de répéter par exemple les données vous allez les analyser en regardant de quoi elle consiste ce qu'elle a et les étudiants doivent aimer ces instructions c'est ce qu'on est en train de faire tout à l'heure on revient sur les rectangles et puis on va dire ok une violation d'un feu rouge un cri d'un feu rouge on sait que ça a quelque chose on sait que ça a un endroit et une longueur en seconde avec les points verguls on sait que c'est un commentaire qu'on n'a pas fait grand chose on a juste écrit quelles sont les composants de nos données composées les parties de nos données composées et ensuite on va pouvoir faire on va pouvoir définir une entrée donc on va définir un truc qui s'appelle red light violation et ensuite on va pouvoir créer des objets qui s'appellent red light violation donc on va on va écrire un constructeur qu'on va écrire prédicat qu'on utilisera un peu plus tard parce qu'on a besoin de savoir si c'est chose ou pas et la violation d'un feu rouge on sait que ça a deux parties on va pouvoir extracter ces objets donc on va définir cette chose qui s'appelle endroit où le feu rouge a été grillé et puis cette chose longueur en seconde et donc ce que ça fait quand je lance ça bah ça fait rien mais par contre on peut créer des objets qui correspondent à un grillé en feu rouge donc je peux faire red light violation donc je fais ça et je donne deux paramètres j'ai un endroit en borgue ça lui en est pendant 4 secondes je peux définir une fonction qui me permet de condenser cet appel et donc en fait on vient de définir le constructeur depuis que tu demandes aux étudiants ok je vous ai écrit ça pour vous dire que soit quand vous devez vous attendre de vos étudiants quand vous travaillez avec ces outils ok donc je t'écris ok c'est un grillé en feu rouge ou un borgue voilà ce que ça représente ça vous semble vraiment trivial mais c'est vraiment important de faire allier la connexion entre le programme et l'espace de problème dans lequel on est on y va ok une autre manière de parler de ces fonctions qu'on a écrite c'est on peut parler de signature on a fait quelque chose particulier pour l'enseignement si vous vous souvenez normalement vous avez parfois la f parenthèse et donc en utilisant ces syntaxes avec la parenthèse au début puis les deux points c'est la syntaxe pour écrire une signature donc on écrit la signature pour notre constructeur qui s'appelle make red light violation et donc ça prend une chaine de caractère puis un nombre rationnel et ça vous donne un objet red light violation qui représente du coup le feu d'avarié en feu rouge ok je suis un peu à leur cherche défendant que je vais vous montrer j'essaie de mettre ça en plein écran ok je suis désolé c'est en allemand en bas ça veut dire vous que l'erreur qui a marqué en bas en allemand veut dire vous avez violé une signature vous avez une ligne de votre programme qui ne respecte pas la signature que vous avez faite plus tôt et ça c'est un aspect important ça qui fait que ce système là est vraiment fait pour les élèves et ceux qui apprennent ce que ça vous donne ce feedback que ça vous donne ce retour sur ce que vous faites tout de suite avec ces erreurs un problème qu'on a vu c'était comment définir que c'était une violation ou non donc on a décidé de ajouter ça dans les fonctions donc on se dit faites attention à ce que les fonctions soient très courtes et c'est pour ça qu'on dit qu'il faut qu'elle fasse une ligne donc ici par exemple on dit est-ce que cette violation de feu rouge est-ce que c'est un problème alors on va regarder donc si on veut écrire cette fonction si on veut faire une fonctionnalité il faut toujours que ce soit une fonction donc on dit qu'il faut une signature et donc sur la signature il faut dire qu'est-ce qu'il rentre dans la fonction et qu'est-ce qu'il sort dans la fonction donc ça on a un nom pour ça donc le nom ça va être Red Red Light Violation Serious donc là on dit c'est on peut dire un point d'interrogation on peut mettre d'autres caractères sur ce langage donc c'est plutôt pratique pour que ce soit clair donc là on dit qu'on veut une violation et qu'en retour ça nous donne un boléin donc vrai ou faux donc ça on voit que c'est une méthode de conception dont j'ai parlé et on peut voir que chaque étape est préparée et c'est des petites étapes mais chacune peut être une réussite pour les étudiants et ça peut être pratique pour apprendre la programmation donc l'autre chose dont on parle ça va être les exemples et les tests donc on insiste à ce que les étudiants fassent ça donc ici par exemple on a l'exemple du RV1 et RV2 qui sont nos exemples et donc on doit dire aux élèves de nous dire comment est-ce qu'elle doit être le résultat de ces fonctions quand on les appelle avec ces violations donc là par exemple on va utiliser checkexpect qui est une fonction qui permet de vérifier donc à chaque fois le premier c'est l'argument c'est le nom de la fonction donc essayer d'utiliser des chaînes des caractères peut-être plus courtes si vous avez des élèves qui sont jeunes c'est peut-être plus facile pour eux donc voilà là on dit qu'on s'attend à ce que quand on appelle cette fonction avec RV1 ça retourne vrai et ça c'est ce qu'on s'attend et ensuite on dit que pour l'autre on s'attend à ce que ça retourne faux donc l'autre c'est juste une demi seconde donc en Allemagne ça ne correspond pas à une violation importante donc on va rajouter des petits commentaires pour expliquer ce que c'est donc ça va être une description courte de ce que c'est ça c'est la signature et ça ce sont les tests alors le skillet c'est on commence à écrire le skillet des détails sur la fonction mais pas tous les détails on connaît déjà ce que le nom de la fonction va être et ce qui va rentrer et ce qui va sortir de cette fonction donc on va déjà écrire ça ensuite c'est cette programmation fonctionnelle donc évidemment on écrit ça lambda pour dire que c'est une fonction c'est une fonction qui accepte une chose qui est donc la red light violation on a parlé tout à l'heure donc on va l'appeler RLV parce que c'est plus court et on va mettre 3 petits points pour dire que le reste on sait pas encore ce que c'est donc ce que je veux dire c'est pas qu'on va remplir le reste plus tard j'écris vraiment ça en cours j'écris vraiment ça et on leur demande vraiment d'écrire les 3 petits points parce que c'est ça c'est un skillet et ça déjà c'est une étape on est le même et ça te donne déjà des points et c'est très facile à faire c'est pour ça qu'on appelle ça un skillet et donc c'est vraiment pas quelque chose, on regarde pas une page blanche sans savoir ce qu'on veut faire sans savoir le prochain étape on a déjà quelque chose et c'est très encourageant donc on appelle ça des des templates aussi donc c'est des petits éléments qu'on connaît des données qu'on a pour savoir les données qui rendent la fonction et les données qui sont de la fonction donc là par exemple ce sont ici les red light violation on sait que c'est un objet composé vous vous rappelez quand on a défini et donc quand on parle d'un objet avec 2 petites choses on veut regarder ce qu'il y a dans ces choses donc ce qu'on fait c'est qu'on va écrire quelque chose qui va nous dire quelles sont ces petits morceaux qu'on a donc vous vous rappelez on vous a dit comment ça marchait alors ici il y avait la définition de la structure on a expliqué comment est-ce qu'on faisait pour définir la red light violation et maintenant on a besoin de quelque chose pour récupérer les parties de cet objet et donc ça on parle de de sélecteurs ou d'accesseurs et donc ces sélecteurs ou d'accesseurs on peut aussi leur écrire des signatures donc ça évidemment on prend une red light violation et ça sort une string et donc pour l'endroit et pour l'autre seconde ça va être on prend une red light violation donc une violation de feu rouge et ça sort un rationnel donc ça c'est un peu répétitif donc ça n'a pas forcément besoin de les répéter comme ça je m'imagine que vous êtes encore en train de vous endormir mais c'est important mais le problème c'est que vous demandez de le faire parce qu'ils ne comprendent pas sinon ça va trop vite donc je vous donne l'impression d'être un peu trop administratif mais bon c'est important alors ce qu'on voit ici c'est qu'on veut accéder les différents parties donc on appelle red light violation place qu'on a juste créé donc vous récupérez l'endroit et on lui passe le RLV et ensuite la même chose pour les secondes qui sont dans la deuxième partie et donc ça c'est des morceaux des morceaux qui construisent ce qu'on fait donc on peut écrire ici des trop petits points donc il faut vraiment les écrire donc ça c'est des morceaux de la fonction donc on voit la question c'était est-ce que c'est sérieux ou pas donc on revient en Allemagne 0,5 secondes ça correspond pas à une violation ça correspond pas à une violation sérieuse et donc maintenant qu'on l'a écrit on peut le supprimer parce qu'on a réfléchi et on sait ce qu'on veut faire et on écrit du coup donc ça j'ai regardé sur internet est-ce que c'est donc j'ai regardé j'ai vérifié donc une seconde ça correspond en dessous d'une seconde ça correspond à pas sérieux au-dessus ça correspond à sérieux donc on fait attention parce que les parenthèses soient toutes fermées et on lance le probable mais là on a une erreur donc il y a une violation de signature qui était la même erreur que tout à l'heure donc on dirait qu'on a oublié quelque chose oui on n'a pas réglé l'erreur de tout à l'heure alors qu'on relance désolé c'est encore en Allemagne je suis désolé en allemand donc ça dit les deux tests ont réussi parce qu'on a fait deux tests et les deux ont marché un test administratif mais c'est comme ça on continue donc je vais vous montrer un petit peu le deuxième étape un peu plus vite donc la prochaine étape on a aussi une violation de la vitesse et donc ça c'est un endroit de combien de kilomètres heure vous étiez au-dessus de la limite donc je vais écrire une structure, une entrée on va lui donner du cours en constructeur on va lui donner du cours en constructeur on va lui donner donc deux attributs donc l'endroit donc ma explanation place et puis la vitesse qui est au-dessus qu'on vient de définir une donnée avec deux composants je pensais que c'est trivial mais les étudiants ont souvent des problèmes avec ça donc c'est bien de le rappeler qu'il y a ces deux secteurs ces deux secteurs dans la définition de la structure donc on va défier un deux deux objets qui représentent des violations de la vitesse SV1 sur Main Street pour 20 kilomètres heure de trop puis sur l'autre street pour 25 kilomètres heure de trop street 25 kilomètres heure de trop de trop donc encore une fois le constructeur a une signature il prend une chaine de caractère puis un nom naturel et ça vous donne un objet de vitesse la question est quand est-ce que l'aviation de la vitesse est sérieuse d'une violation sérieuse donc je crée nouveau une courte description puis je définis la signature pour ce test donc ça apprend un objet et ça vous retourne un bouleur trop près ou faux en Allemagne c'est sérieux quand c'est 21 kilomètres heure de trop donc on s'attend à ce que SV1 ne soit pas une violation sérieuse alors que SV2 devrait être une violation sérieuse donc notre fonction spinning violation sérieuse devrait retourner faux avec SV1 passé un paramètre et vrai avec SV2 passé un paramètre donc maintenant on peut défier la fonction est-ce que la violation est sérieuse ou pas donc on commence par le scratch donc scratch évite remplacer par accéder aux attributs on part du scratch et en fait on va ajouter de manière acrémentale par-dessus du scratch ok on réfléchit ok donc en fait on a juste besoin de l'attribut on n'a pas besoin d'attributs de l'endroit d'habitation trop et donc on a comparé avec notre limite c'est bon ok il n'y a pas seulement des données composées il y a aussi des données mixtes et donc vous reconnaissez des données mixtes quand vous avez un O ou un 2 quand vous devez écrire des signatures et donc on dit une violation trafique et une de ces choses suivantes c'est soit la violation d'un feu rouge soit un feu rouge soit aller trop vite violation de la vitesse et de la même manière que pour les données composées c'est de données mixtes donc on va définir une signature on va dire que c'est mixte à dire que c'est soit une violation de la vitesse ou une violation de la feu rouge donc si vous vous souvenez bien le problème la régime mais si on a seulement des fonctions l'une fonctionne sur les violations de la vitesse la autre fonctionne sur les violations de la vitesse mais elles ne fonctionnent pas sur le mixte donc on a une qui fonctionne uniquement sur les violations de la vitesse mais pas sur le mixte donc on a un peu créé des tests et nous allons correspondre à ça maintenant ce qu'on fait quand on a une violation trafique si vous ne savez ce que j'ai quand on a des données composées vous faites des appels vous faites des appels sur vos attributs mais maintenant on a des données mixtes donc on n'a pas de troncs qui est différent ici un scout va être différent si vous avez accédé à des attributs il va falloir qu'on sache sur quel type de données on travaille soit on travaille sur une red light violation soit on travaille sur une violation de la vitesse donc on a besoin d'une fonction qui va nous dire sur qu'on travaille donc si vous vous souvenez bien au tout début en fait quand on a défini nos structures données composées on avait défini le constructeur et les accesseurs mais on avait également mis un prédicat dont on ne savait pas servir encore en fait ce prédicat va vous permettre de savoir à quel type d'objet vous faites accès et donc ce prédicat nous dit prendre paramètres n'importe quel type d'objet et ça va nous retourner un boulier qui va nous dire que cet objet correspond au part à une violation d'un feu rouge qu'on a besoin d'une condition ici la condition va avoir donc deux branches qui vont s'exécuter selon si la condition est vraie ou fausse donc on va représenter ça avec des ellipses pour l'instant on écriverait en ça pour commencer maintenant il faut qu'on trouve des tests pour ces deux branches est-ce que c'est une violation d'un vitesse ou une violation d'un feu rouge donc une des branches va correspondre des branches va correspondre si on est sur une violation d'un feu rouge et l'autre branch va correspondre sur le fait qu'on soit sur une violation d'un vitesse et ensuite du coup chaque branch va appeler le test qui vous dit c'est sérieux ou pas donc j'espère que vous pouvez voir les deux choses d'une part c'est super ennuyeux de faire tout ça mais peut-être que vous pouvez voir que chaque étape qu'on a ici est un principe un nom particulier qui est expliqué de manière concrète et non abstract c'est un petit coup vous pouvez c'est un petit coup vous pouvez réutiliser du coup je pense que c'est une super méthode pour expliquer aux étudiants à quoi tu devais penser mais réaliser avec ces exercices et donc les principes derrière cette méthode d'enseignement c'est qu'à chaque étape on doit vraiment être sûr que les étudiants ont un nom derrière les choses qu'ils ont appris chaque technique a un nom on parle de données composées on parle de données mixées on parle de squelettes donc tout ça c'est des données factuelles et qui permettent de vraiment juger les étudiants donc si on apprend une classe qu'ils vont avoir des cadeaux à chaque fois qui réussissent un truc ça peut vraiment marcher pour chaque étape comme ça donc grâce à ça on peut vraiment voir qu'avec ces programmes-là on accepte comme étant un succès d'apprentissage quand ça correspond à ce à quoi on attend c'est vraiment juste quelque chose qui correspond à ce point de temps donc on peut parler de ça en disant que c'est une méthode créative mais je pense pas que c'est le cas je pense pas que les artistes créatifs utilisent des techniques et des noms de techniques pour chacun je pense pas que c'est le cas comme ça on parle de Mozart Mozart n'a jamais eu besoin d'apprendre et de pratiquer avant et Mozart a parlé quand il était vraiment enfant et du coup il avait des tonnes et des tonnes d'heures pour apprendre ces choses-là donc moi je pense que cette méthode-là éprouvée et vraiment marche moi ça fait plus de 11 ans que je le fais avec des enfants ça marche avec les programmeurs qui viennent d'apprendre ça marche avec les programmeurs qui ont des mauvaises habitudes qui savent pas que programme est très bien donc si ça vous intéresse vous pouvez regarder notre site internet on a un autre projet qui s'appelle programmebyindesign.org donc vous pouvez aller voir ça il y a beaucoup de techniques qui sont empruntées de notre méthode c'est disponible en ligne gratuitement tout ça donc si vous voulez le même chose mais en allemand vous pouvez aller voir d'un programme .di qui a aussi plus d'informations et donc il y a aussi un bouquin qu'on est en train d'écrire et qui j'espère et c'est tout ce que j'ai pour vous aujourd'hui merci beaucoup merci pour la différence si on a des questions on a des micros en la salle et si on peut s'y entendre oui, le signal angel a une question donc on a une question ok, quelqu'un s'ouvre assez nous demande quelles sont les bénéfices de l'utilisation de dottoracket à la place d'utiliser dottoutis mais il y a beaucoup d'initiatives qui utilisent Python en vrai si on essaie de nommer et formaliser les techniques les techniques systématiques dont j'ai montré on essaie de les appliquer en Python on se rend compte que c'est vraiment difficile et moi personnellement je trouve ça impossible les programmes en Python c'est très important c'est très important les programmes en Python ne sont pas développés de cette manière systématique et c'est pour ça que je pense que ce langage est beaucoup mieux et ce pro-langage de programmation a vraiment été designé pour vraiment suivre les principes de ce que je vois, moi pour moi, Python ce n'est pas vraiment été développé avec ça en tête bonjour j'enseigne des enfants qui ont 14 ans collège je leur apprend la programmation et je dis app-inventeur je ne suis pas très sûr vous avez dit, ok vous avez besoin d'acheter des robots légaux non mais ce n'est pas vraiment le cas moi ce que je trouve difficile c'est que les étudiants que j'ai c'est pas vraiment ils ont pas vraiment les meilleurs parents ils aimeraient montrer quelque chose mais votre programme ressemble vraiment à quelque chose de très ennui je trouve vraiment intéressant de pouvoir montrer quelque chose et comment vous faites ça à vous c'est sûr que pour l'audience on va choisir des exemples différents mais il y en a d'autres j'ai montré les images ça marche super bien pour les enfants et pour certains adolescents et du coup ça peut marcher pour écrire des jeux vidéo en utilisant ça ça peut être pratique pour montrer aux parents c'est un bon aspect de ça et je pense que cette approche de programmation peut vraiment marcher jusqu'à devenir un professionnel on peut même créer des jeux vidéo avec au premier semestre on utilisait ça et ils ont quand même réussi à faire des vieux jeux vidéo comme le snack vraiment c'est sympa pour les enfants ça marche bien microphone numéro 1 bonjour, merci pour votre talk j'aimerais savoir que votre approche a beaucoup de choses répétitives comment vous parlez de la méthodologie dans la salle de classe et si je voudrais savoir si vous avez des recommandations sur comment structurez-vous votre classe donc moi pour mes classes c'est vraiment exactement comme je vous ai montré en fait c'est de vous dire que vraiment c'est vraiment ce que je fais donc je peux parler de certains amis à moi qui ont essayé de faire ça un peu différemment mais vraiment ce qui est très important c'est que en tant que professeur j'ai essayé de faire ça un peu plus court mais vraiment ce qui est important c'est qu'il faut faire chaque étape il faut aller sur chaque méthode c'est pas juste donner des noms à chaque étape mais c'est aussi aller doucement donc j'essaie de le montrer quand on va doucement comme ça ça marche et ça se déroule bien tout seul vraiment ça marche bien mais voilà c'est comme ça que je fais microphone numéro 3 je trouve que c'est très bien mais est-ce que apprendre un langage fonctionnel alors que les gens vont très vite avoir besoin d'utiliser un langage programmatif comment est-ce que vous faites une transition entre langage fonctionnel et langage opératif moi je suis pas d'accord avec ça mais bon moi j'ai une boîte et une boîte utilise de la programmation fonctionnelle c'est vrai que les effets de ça c'est que c'est vrai que si tu écris des programmes professionnels une bonne partie de ça ça va être la programmation fonctionnelle et donc c'est pour ça que c'est important d'apprendre un programme c'est vrai que les programmes les langages opératifs n'apprennent pas ces parties-là pour moi ça pousse les bords de ce dont on a l'habitude moi personnellement je sais pas apprendre les langages opératifs je pense que c'est pas ce qu'il faut faire moi ce que je peux faire par contre c'est donner ces parties-là en étant moins importante mais qui peuvent apprendre par eux-mêmes plus tard c'est une bonne chose parce qu'on sait que la programmation fonctionnelle marche et c'est une bonne fondation des connaissances quand on apprend la profession c'est vrai que il y a beaucoup de choses qui rajoutent par-dessus mais bon on va en parler plus tard vous pouvez venir me voir après microphone numéro 4 et j'aimerais vous remercier pour votre question et je suis curieux comment l'expérience combien de fois répétez-vous les choses lorsque vous vous enseignez combien de fois vous avez que la quantité de répétition que vous devez faire pour que les étudiants vraiment mémorise les choses je sais pas si j'ai vraiment une règle pour ça moi dans mon expérience c'est vrai que tous les principes que j'ai appris ici il y en a plusieurs je fais au moins deux exemples certains je fais 3 ou 4 en général c'est assez à l'université mais bon ça dépend en fait c'est pas expérience comparer les deux en fait ce qu'on faisait à l'université en fait comment on fait pour vraiment aller vite et apprendre les choses on peut aller beaucoup plus vite on n'a pas besoin de beaucoup de points pour apprendre très vite je sais pas si beaucoup d'universités réussissent à avoir des vieux vidéos qui marchent à la moitié de l'année mais en tout cas nous c'est le cas donc même si on dirait que c'est vraiment ennuyeux et très lent mais en fait on apprend super vite grâce à ça et on arrive à avoir des résultats très très vite microphone numéro 2 j'ai appris la programmation tant qu'enfant et je pense que je pense que la manière dont on pense de la programmation ça s'applique très bien en mathématiques est-ce que c'est chill ce que vous faites pour s'améliorer la mathématique si on garde les trois projets dont j'ai parlé donc ceux-là ils sont au collège je le sais si vous regardez vraiment on se concentre sur l'algebra donc c'est exactement ce dont vous parlez c'est vraiment il y a une comparaison et ça leur permet aussi d'appliquer ces principes là microphone 1 ok, microphone 1 comment est-ce que vous maturez le succès de vos métonnes d'enseignement alors je pense que en général je regarde les exames à la fin on a des papiers qu'on a publiés sur le sujet avec des résultats donc on regarde de très près nos étudiants et on regarde vraiment tout ce qu'ils font et on fait bien attention qu'ils apprennent bien ce qu'il faut et qu'on va assez vite ou assez lentement pour eux et on a vu que grâce à cette méthode sur les exames on a vu vraiment que ça marchait bien et qu'il y avait des très bons résultats on regardait chaque problème qu'on a posé à chaque fois et on a vu qu'il y avait des résultats individuellement et microphone 4 est-ce qu'il y a des choses comme l'autor complétion ou est-ce que vous vous déconseillez l'utilisation de cette fonctionnalité non il n'y en a pas que je sache je ne sais pas si je dirais que c'est une mauvaise chose je sais que mes collègues américains comme vous avez vu le template a toujours un peu des choses qui se répètent donc on pourrait se dire que ce serait pratique d'avoir un bouton qui rajoute ce truc-là il serait vrai que les américains ont essayé et ils se sont rendu compte que ça ne marchait pas et ils ont arrêté mais je ne suis pas vraiment sur des détails donc vous pouvez m'envoyer un email si vous voulez je vous donnerai les détails de cette étude mais voilà je ne suis pas sûre pourquoi mais en tout cas en tout cas je ne suis pas moi contre je ne suis pas contre ça mais on s'est rendu compte que ça ne marchait pas Mike merci beaucoup pour cette conférence