Archives de catégorie : Initiation

De bons bouquins pour s’initier à la programmation

J’ai mis à profit la période estivale pour lire pas mal de bouquins, et j’ai découvert quelques pépites dont j’ai envie de vous parler aujourd’hui. Je ne parlerai pas ici des quelques bouquins que j’ai lus pour mes besoins professionnels (ça fera peut être l’objet d’un autre article), mais plutôt des bouquins destinés aux personnes – jeunes ou moins jeunes – qui souhaitent s’initier à la programmation. Oui je sais, c’est une vieille marotte chez moi (j’ai déjà parlé de ce sujet dans de précédents articles), mais en plus de mes activités de développeur, j’enseigne aussi la programmation (essentiellement à des adultes). Je considère que cela fait partie de mon travail d’étudier comment mes confrères abordent cette discipline particulière qu’est l’enseignement de la programmation, cela me permet de m’améliorer en tant que prof.

Je vais donc vous parler de 3 livres, un en français et deux en anglais.

Commençons par le livre en français :

« Apprendre à programmer en Python (pour jeunes débutants de 7 à 97 ans) », de Frédéric Laroche (publié aux éditions Ellipses en 2015).

Je dois dire que j’ai été séduit par certains aspects de ce livre, aux illustrations sympas (de Gilles Macagno), et qui fourmille d’anecdotes. L’auteur a souhaité privilégier un style de programmation procédurale (plutôt qu’objet) pour que les exemples restent accessibles au plus grand nombre. C’est un choix qui se tient, mais j’avoue que j’ai été décontenancé par le premier chapitre, destiné à planter les bases du langage Python. Je trouve que l’auteur va souvent trop vite, et je me disais en lisant ce chapitre qu’un lecteur complètement néophyte pourrait se retrouver assez vite largué. En revanche, une personne ayant déjà quelques bases de programmation, en Python ou sur un autre langage, devrait pouvoir s’en sortir. Attention, le reste du livre est carrément génial. Au travers de jeux connus et moins connus, l’auteur livre un beau travail de pédagogue et j’ai pris un grand plaisir à le lire. C’est vraiment un bouquin généreux et sympa, et malgré le chapitre d’intro que je trouve un peu bancal, je vous le recommande.

Un autre livre, qui m’a procuré un grand plaisir de lecture, c’est celui-ci :

« Get Programming with Javascript« , de John R. Larsen, aux éditions Manning. Il est paru cet été, et j’ai sauté sur l’ebook dès sa parution. Pour le coup, d’un point de vue pédagogique, c’est un sans faute. Je trouve la présentation des fondamentaux de Javascript très progressive et cette progression est très réfléchie. Chapitre après chapitre, l’auteur construit un jeu de rôle au sein d’une page web, et l’enrichit de nouvelles fonctionnalités tout en présentant de nouveaux concepts de programmation. J’ai vraiment pris un grand plaisir à le lire, et je me prends à rêver que ce livre soit traduit en français, pour qu’il puisse toucher un lectorat plus large chez nous.

Le troisième livre que j’ai bien apprécié, c’est celui de Syed Omar et Faruk Towaha, paru chez Packt en janvier 2016 :

« Javascript Projects for Kids »

Le livre propose tout d’abord une intro à Javascript qui est sympa, mais de construction assez classique. Vous y trouverez aussi une introduction à jQuery qui est intéressante, mais les différents projets présentés ensuite ne s’appuient pas nécessairement sur jQuery, ce qui n’est d’ailleurs pas dérangeant. Il faut souligner que les chapitres sont quasiment tous indépendants, et présentent des projets écrits dans des styles souvent très différents. En fait, ce livre c’est un peu « l’auberge espagnole » du Javascript, mais il est généreux, fourmille de bonnes idées et les projets présentés sont sympas à réaliser. Je donnerais une mention spéciale au chapitre 9.3 (Dissecting Hangman) dans lequel les auteurs ont utilisé un graphique SVG pour dessiner leur pendu, et AngularJS pour masquer ou faire apparaître les différentes parties du pendu en fonction des mauvaises réponses (via la directive Angular « ng-show »). J’avoue que je n’avais jamais envisagé jusqu’ici de combiner Angular avec du SVG, et je me mets l’idée « de côté » car je la trouve sacrément futée. Attention, ce livre ne fournit pas d’introduction à Angular, du coup si vous ne connaissez pas ce framework, vous aurez peut être du mal à comprendre le code présenté dans ce chapitre du « pendu », mais ça peut être aussi un bon moyen de découvrir Angular, après tout…

Voilà… trois livres très différents, mais tous passionnants, car tous écrits par des auteurs passionnés, j’espère qu’ils vous procureront autant de plaisir qu’ils m’en ont procuré.

A noter que j’ai découvert un autre bouquin chez Manning qui s’intitule « Hello AppInventor!« , de Paula Beer et Carl Simmons (livre paru en 2014).  Je ne l’ai pas encore lu, faute de temps, mas il est sur le haut de ma pile, j’espère que je vais réussi à le lire rapidement. Pour ceux qui ne connaissant pas, AppInventor est un projet initié par Google et maintenu par le MIT. Cette application reprend les principes de Scratch, mais elle est destinée à développer des applications pour les tablettes et smartphones Androïd. Ca a l’air vraiment cool.

Allez, bonne rentrée à tous !!  😉

 

Pour les followers : mon Tweet

 

 

Apprendre comment apprendre

Comment apprend-on ? Comment notre cerveau fixe-t-il de manière durable les concepts, les idées, les techniques que nous étudions quand nous suivons un cours ? Que se passe-t-il justement quand une notion que nous pensions acquise se révèle finalement complètement floue, et nécessite d’être réétudiée ? Pourquoi l’étude de nouvelles notions semble si facile pour certains, et si difficile pour d’autres ? Comment lutter efficacement contre cette fichue procrastination… et c’est quoi au juste, la procrastination ?

Nous avons tous des idées plus ou moins préconçues sur la manière dont notre matière grise fonctionne, mais finalement nous ne savons pas grand chose de cette drôle de machine qui est aux commandes de notre corps, et de notre personnalité.

A l’heure où tant de ressources sont accessibles en ligne pour se former sur tout un tas de sujets, il est grand temps que nous nous intéressions de plus près à ce drôle de pilote qu’est le cerveau.

Heureusement, des avancées majeures ont été réalisées ces dernières années, dans la compréhension de notre cerveau, et des mécanismes en jeu durant l’apprentissage. Des chercheurs renommés prennent aujourd’hui la peine de communiquer, notamment via internet, sur l’état des recherches en cours, et nous aident à y voir plus clair dans toute cette matière grise (jeu de mot lourdingue, désolé :).

Si vous m’avez lu jusque là, c’est que le sujet vous intéresse, OK… alors voici une sélection de vidéos et de cours que je trouve passionnants.

Tout d’abord, parlons de la procrastination. Si vous êtes sujet à ce phénomène, sachez que vous n’êtes pas le seul, et il faut absolument que vous regardiez la conférence TED de Tim Urban « Inside the mind of a master procrastinator » (sous-titre disponible dans plusieurs langues, dont le français). Avec beaucoup de drôlerie et d’intelligence, Tim Urban dédramatise le sujet, et nous aide à comprendre comment se créent ces dérapages qui nous mettent la tête dans le sac, alors même que nous avons des échéances à tenir et pas de temps pour le superflu.

Si Tim Urban nous explique la procrastination, pour apprendre à lutter efficacement contre ce phénomène, rien de tel que le cours de deux experts en neuro-sciences, Barbara Oakley et Terry Sejnowski. Ce cours, accessible gratuitement sur coursera.com, s’étale sur 4 semaines. Il   s’intitule Learning how to learn. Passionnant de bout en bout, il nous présente les dernières avancées en ce qui concerne la compréhension que les chercheurs ont du fonctionnement du cerveau. Les deux chercheurs se sont attachés à nous expliquer les mécanismes en jeu lors des périodes d’apprentissage. Comment fixer durablement les idées, comment lutter contre la procrastination, quelles sont les méthodes d’étude inefficaces qu’il faut éviter ? Vous trouverez dans ce cours les réponses à ces questions, et à bien d’autres.

Peut être êtes-vous, comme moi, intéressés par les mécanismes d’apprentissage en jeu chez les enfants, et notamment chez les tous petits. Alors il faut que vous suiviez le blog de Nouhad Hamam. Ce dernier anime un blog, une newsletter et un meetup où il expose clairement de quelle manière on peut stimuler l’envie de découvrir et d’apprendre, chez les enfants. Pour suivre les travaux de Nouhad Hamam, le plus simple est de vous enregistrer sur son portail : Hach The Kids.

Concernant l’apprentissage, et en particulier les difficultés d’apprentissage, il faut bien comprendre qu’il n’y a pas de fatalité et qu’une pédagogie adaptée peut faire des miracles. Encore faut-il vouloir s’en donner les moyens, et donner aux enfants foi en leurs propres capacités. C’est cela que Carol Dweck nous conte lors d’une magnifique session TED de 2014 qu’elle avait intitulée : The power of believing that you can improve.

 

 

 

Apprendre la programmation aux enfants (again…)

Eh oui, en cette rentrée de septembre ensoleillée, je reviens sur un sujet qui me tient particulièrement à coeur, à savoir : enseigner la programmation aux enfants.

Je me demandais notamment s’il existait dans la littérature contemporaine de bons bouquins susceptibles de permettre à des enfants ou à des adolescents de s’initier à la programmation. J’emploie le terme « contemporain » sciemment car dans les années 80, et même au début des années 90, on trouvait de bons livres d’initiation, s’appuyant sur les langages BASIC ou Pascal. Et c’est d’ailleurs avec des ouvrages de ce genre que je me suis formé à la programmation, comme beaucoup de développeurs de ma génération.

Mais aujourd’hui, les langages BASIC et Pascal ne sont plus d’actualité. On peut d’ailleurs le regretter, car il s’agissait de langages particulièrement bien adaptés à l’enseignement. Mais bon, c’est comme ça… Les langages qui ont le vent en poupe aujourd’hui, ce sont des langages comme PHP, Javascript, Python ou Ruby. Et ma foi, ils sont aussi très bien, à condition de savoir adapter l’apprentissage aux capacités des enfants que l’on souhaite initier.

Pour en revenir à mon sujet du jour, j’ai déniché 3 bons bouquins en anglais, chez le même éditeur (NoStarch.com), dont un a été traduit en français et est disponible chez Eyrolles (il s’agit de « Python for Kids« ).

Les 3 ouvrages en question sont les suivants :

J’ai commencé par lire le livre de Bryson Payne, après avoir assisté à l’un de ses webinars. J’ai apprécié les idées proposées dans son livre, notamment son utilisation de la « tortue », une petite librairie Python qui permet de tracer des graphiques très simplement, un peu à la manière d’une ardoise magique (vous savez ce jeu indémodable qui consiste à tracer des formes au moyen de 2 roulettes). Pour la petite histoire, cette « tortue » était à l’origine un des composants d’un langage de programmation de plus haut niveau, le LOGO (cf. Wikipédia pour plus d’infos sur ce sujet).

Ce qui m’a dérangé dans le livre de Bryson Payne, c’est qu’il va très vite (trop vite à mon goût) vers des exemples assez complexes, qui pourraient décourager le lecteur si sa connaissance du langage Python est trop superficielle. En revanche ses exemples sont assez emballants, et il y a beaucoup de bonnes idées à puiser dans ce livre. Comme son sous-titre l’indique, ce livre est destiné à aider des parents qui voudraient enseigner la programmation à leurs enfants. Mais pour tirer pleinement parti de ce livre, les parents ont intérêt à bien maîtriser le langage Python, sinon ils risquent d’être perdus face à certains raccourcis pris par l’auteur.

A l’inverse, le livre de Jason R. Briggs, Python for Kids (livre qui est disponible chez Eyrolles en français), démarre de manière plus progressive. La première partie de son livre est peut être plus rébarbative, du fait qu’il prend le temps de présenter les bases du langage Python (il manquerait peut être de temps en temps un exemple amusant pour casser la monotonie de l’ensemble). En revanche, dès que Jason R. Briggs s’attaque à l’utilisation de la tortue, il m’emballe vraiment car ses explications progressives sont très accessibles, et très pertinentes, et c’est un plaisir de le suivre. Un adulte pourra aider un enfant à piocher dans ce livre les éléments intéressants adaptés à son niveau de compréhension. Un adolescent pourra sans aucun doute se débrouiller seul avec ce livre, s’il se forme en autodidacte.

Voici un exemple de programme Python exploitant la fameuse tortue graphique, pour générer des formes géométriques amusantes (exemple emprunté au livre « Teach your kids to code »).

import turtle
t = turtle.Pen()
for x in range(100):
	t.circle(x)
	t.left(90)

Et voici une prise de cliché de l’environnement Python, avec l’image en cours de réalisation :

turtle_python_exemple

Ces deux livres (« Python for Kids » et « Teach your kids to code ») me semblent très complémentaires. Mais je recommanderais le premier pour les bases solides qu’il apporte au lecteur, et le second comme complément pour le réservoir d’idées amusantes qu’il propose.

Le livre « Javascript for Kids », de Nick Morgan, est lui aussi très emballant. Je suis en train de le lire, mais comme je manque de temps, je risque de mettre encore quelques semaines avant de le terminer. J’aime beaucoup son approche très progressive, ses exemples simples et pertinents, son effort aussi pour – dans certains cas – prendre du recul par rapport au programme à implémenter (en proposant par exemple un pseudo-code en langage naturel décrivant l’objectif à atteindre, avant de le coder réellement en Javascript). Bref c’est un livre qui mérite qu’on s’y attarde, et qui mériterait lui aussi d’être traduit en français (peut être que les éditions Eyrolles sont déjà sur le coup, en tout cas je le souhaite).

Une question vous taraude peut être à l’issue de cet article : « alors… Python ou Javascript ? »

Franchement, j’adore Javascript, mais il me semble que Python a quelques atouts dans sa manche pour l’enseignement de la programmation aux enfants. Avec en premier lieu un shell complet incluant un éditeur avec coloration syntaxique, une librairie graphique intégrée (tkinter) qui permet de générer des graphiques très simplement (animés ou non), une librairie « turtle » intégrée dans la version standard de Python pour jouer avec la tortue… Bref, tout est fait dans Python pour faciliter l’apprentissage.

Avec Javascript, c’est un peu plus compliqué. On peut jouer avec de différentes manières, et en premier lieu on peut commencer par l’utiliser dans la console de son navigateur préféré, mais dès que l’on souhaite développer des choses sophistiquées, il faut ajouter des connaissances sur le HTML, le DOM, l’API Canvas du HTML5 (pour la génération de graphiques), choisir un éditeur de code, etc… Bref, l’écosystème de Javascript est un peu hétéroclite, et du coup un peu plus complexe que celui de Python. Du coup, je recommanderais l’apprentissage de Javascript plutôt à des adolescents (peut être à partir de 12 ans), alors qu’avec Python, il me semble que l’on peut démarrer plus jeune, plus facilement (peut être à partir de 8 ans).

J’ajoute que ces 3 livres me semblent également très bien pour initier des adultes à la programmation.

Voilà, j’espère que ce petit article vous aura intéressé, et surtout qu’il vous donnera envie de découvrir ces livres, ces auteurs, et peut être d’initier des enfants à la programmation au travers de ces très bons langages que sont Python et Javascript.

Sur ces bonnes paroles, je vous souhaite une très bonne rentrée. 🙂