«Pascal et encore moins Basic ne sont absolument pas nécessaires»: un entretien avec des formateurs en programmation sportive

Cette année, VKontakte, avec le soutien de Promsvyazbank, a lancé le programme de bourses VK Fellowship pour les professeurs d'informatique. Ensemble, nous avons sélectionné 15 enseignants des régions russes: créateurs de cours de programmation protégés par le droit d'auteur, enseignants, directeurs de centres de formation continue et formateurs qui préparent les étudiants aux olympiades de programmation internationale. Ils ont reçu des bourses de VKontakte et de Promsvyazbank et participent maintenant à nos écoles de terrain.



Tous les enseignants ont une vaste expérience et sont les auteurs de leurs propres cours sur les bases de la programmation. Dans cet article, nous avons demandé à trois boursiers de répondre à nos questions sur l'enseignement de la programmation et de l'informatique en général.

- Tout d'abord, faisons connaissance.

Inessa Shuykova: Je travaille en tant que directrice et professeur d'informatique au Centre GOAOU pour le soutien aux enfants surdoués "Stratégie" de la ville de Lipetsk. J'enseigne le C ++ et Pascal dans les classes 6-11.
Peter Kalinin: Je vis et travaille à Nizhny Novgorod. Je donne des cours au Lyceum n ° 40, sur la base de Lobachevsky UNN, ainsi qu'à distance, sans référence à un établissement d'enseignement particulier. Surtout en Python, Pascal, C ++. Avec certains enfants, j'étudie en Java, en C # et dans des langages plus exotiques. La plupart d'entre eux vont en 9e-11e année, mais certains sont déjà en 4e année.
Sergey Belyaev: J'habite à Krasnoïarsk. Je travaille en tant que professeur d'éducation supplémentaire au Palais régional des pionniers de Krasnoïarsk. Il existe de nombreux langages dans le travail - C ++, Pascal, Python, Basic, Java Script, Perl. L'âge des étudiants est différent - généralement de 12 à 18 ans.

À propos de l'enseignement de la programmation


- Comment organiser la programmation pédagogique dans les écoles?

Inessa: Chaque élève doit acquérir des compétences de base dans l'utilisation de produits logiciels à usage général, enseigner l'hygiène numérique, un travail sûr sur Internet et les bases de la programmation. Pour les enfants ayant un intérêt et des capacités pertinents, ajoutez des algorithmes et des structures de données. Les cours de programmation avancée devraient être dispensés sous forme de cours spéciaux. Chaque étudiant en cours d'informatique devrait être inclus dans l'équipe de projet pour la mise en œuvre du projet informatique de l'école.

Peter: Je ne me considère pas comme un spécialiste précisément de l'éducation de masse des écoliers du secondaire, mais je pense que la formation doit être adaptée aux besoins des écoliers. Les étudiants intéressés devraient recevoir des connaissances approfondies, les autres ayant suffisamment d'idées superficielles sur la programmation.

Sergey: Le programme général dans le cadre du sujet de l'informatique devrait être le même que maintenant: programmation superficielle et à des fins éducatives. Un cours plus significatif est destiné aux classes spécialisées avec un biais physique et mathématique. La formation professionnelle n'est raisonnable que dans le cadre de la formation continue.

- Les principaux problèmes de l'enseignement de la programmation en Russie? Comment les résoudre?

Inessa: Dans le cadre de l'enseignement général, l'informatique se voit allouer un petit nombre d'heures (s'il ne s'agit pas de cours spécialisés) - ce n'est pas le sujet principal auquel une grande attention serait accordée. D'où la conséquence - les professeurs d'informatique ne sont pas toujours professionnels dans cette matière, et pour de nombreux écoliers, cette matière est associée à un processus qui n'est pas si important et appliqué par le système.

La solution pourrait être l'introduction d'une primauté du droit, permettant de prendre en compte l'enseignement complémentaire comme discipline de l'enseignement général. Les enfants sont heureux de suivre des cours de programmation dans les centres de formation continue. La possibilité de commencer à maîtriser un cours à la suite d'un programme d'enseignement général attirera l'attention d'un plus grand nombre d'étudiants sur la maîtrise des compétences en programmation.

Peter: Si vous ne tenez pas compte des divers problèmes bureaucratiques, alors, probablement, l'essentiel est la connaissance très dépassée (ou même son absence) de la plupart des enseignants.

Sergey: Je pense que les problèmes de l'enseignement de l'informatique sont combinés avec les problèmes généraux de l'éducation en Russie, avec le fait que la profession d'enseignant n'est pas prestigieuse. Et un enseignant enseignant la programmation ne fait pas exception.

- Vaut-il la peine d'essayer une programmation avant l'école? Sous quelle forme cela vaut-il la peine d'être mis en œuvre?

Inessa: Avant l'école, il faut développer des capacités mathématiques générales, un intérêt pour la lecture, une motivation pour la cognition en tant que telle. Et je considère qu'il est inapproprié de donner aux enfants quelque chose pour lequel ils ne sont pas psychologiquement prêts.

Peter: Je n'ai pas de réponse claire, mais je crois que développer des jeux et des tâches de direction programmeur a le droit d'exister. Par exemple, j'ai acheté à Mosigra le jeu "Taxi" de ma fille de trois ans.

Sergey: Je pense qu'il est trop tôt pour étudier la programmation avant l'école. Ce serait bien avant cela d'apprendre d'abord à lire, à écrire et à compter.

- Il est communément admis que la programmation est aujourd'hui autant une compétence nécessaire qu'un permis de conduire et l'anglais. Que dites-vous?

Inessa: Oui, ça l'est! Même si vous ne programmez pas au travail, comprendre comment les programmes et les systèmes d'information sont organisés vous permettra de vous sentir confiant dans le futur environnement numérique.

Peter: Pas du tout d'accord. Premièrement, les droits et la langue (ces derniers, dans une moindre mesure) sont nécessaires à 90% des personnes non seulement pour le travail, mais aussi pour la vie personnelle. La programmation en dehors du travail nécessite un nombre relativement restreint de personnes, et dans la grande majorité des cas - uniquement comme passe-temps. Au travail, la programmation est également loin d'être nécessaire pour tout le monde - en cela, elle ne diffère pas beaucoup du permis de conduire ou de la langue.

Sergey: Bien sûr que non, sinon beaucoup se seraient sentis mal à l'aise sans les compétences nécessaires. La programmation est une spécialité assez étroite, que seuls quelques maîtres maîtrisent. Les gens apprennent l'anglais plus souvent et conduisent une voiture.

À propos des fonctionnalités de l'apprentissage des langages de programmation


- Quelles sont les tâches de programmation les plus difficiles et les plus intéressantes?

Inessa: Je pense que cela dépend principalement de l'idée de la tâche et non du sujet. En d'autres termes, à partir de l'élégance et de la beauté de l'idée sous-jacente à la tâche, à quel point vous pourrez admirer plus tard le caractère inhabituel de la tâche ou la légèreté de l'idée qui était à la base et nécessaire pour aller plus loin.

Peter: La chose la plus intéressante est les tâches difficiles qui nécessitent un regard inhabituel sur les algorithmes standard ou la théorie standard. Par exemple, la tâche «K» vient d'ici.

Sergey : On pense que les sujets les plus difficiles sont la récursivité, les structures de données (en particulier les arbres de segments et un arbre cartésien) et la théorie des graphes. Bien sûr, dans n'importe quel sujet, il peut y avoir des tâches simples. Comme dans tout sujet simple de la forme «mathématiques simples», il ne peut y avoir aucune mathématique simple, même sans programmation. Par conséquent, tout cela est assez subjectif, on ne peut pas affirmer que toutes les tâches d'un des sujets sont nécessairement plus compliquées que les autres. Pour moi personnellement, les problèmes de la théorie des jeux semblent être les plus difficiles, en particulier ceux qui utilisent la méthode minimax.

- Est-il possible de commencer à apprendre le C ++, en contournant Pascal et Basic?

Inessa: Oui, certainement possible. La confirmation est mon expérience avec les enfants.

Peter: Plus précisément en C ++ - c'est possible, mais je ne le recommande pas. Je recommanderais de remplacer C ++ par Python. Pascal et plus encore Basic ne sont absolument pas nécessaires.

Sergey: Bien sûr. Je fais ça depuis 15 ans. Si l'objectif principal est d'initier les élèves aux éléments de programmation en peu de temps et non d'enseigner la programmation à dessein, alors Python est mieux.

- Dans quel ordre avez-vous besoin de commencer à apprendre le C ++ pour ne pas vous perdre dans la nature?

Inessa: Je vous conseille de commencer tout de suite à résoudre des problèmes simples. Un exemple de bon cours est «Introduction à la programmation C ++» par Mikhail Gustakashin.

Peter: Je crois que dans n'importe quelle langue, vous devez d'abord apprendre les choses de base qui vous permettent d'écrire des programmes simples (variables, if, boucles, tableaux, chaînes, nombres réels). Avec eux, il est déjà possible de résoudre presque tous les problèmes de l'Olympiade. Le reste - au besoin.

Sergey: Je ne vais personnellement au langage lui-même qu'après quatre leçons visant à me familiariser avec la programmation en utilisant des exemples d'algorithmes fascinants - comme des jeux et des vidéos de la campagne annuelle "Code Hour". Ensuite, je présente aux gars les avantages et les inconvénients de la profession de programmeur, y compris mes nombreuses années d'expérience. En fait, le langage de programmation choisi pour l'étude n'est pas si fondamental; l'ordre des sujets sera toujours approximativement le même. La connaissance de la syntaxe d'une langue n'est pas la chose la plus importante, tout humaniste peut la maîtriser. La chose la plus importante est la capacité d'algorithmiser et d'écrire du code clair et sans erreur.

- Comment écrire du code C ++ clair?

Inessa: Pour les étudiants, le nom correct des variables, la conception du style est important. Le code clair est un code structuré qui est lisible par d'autres personnes de votre équipe.

Peter: Comme dans n'importe quelle langue, diviser le code en entités raisonnables, nommer des variables, etc. Mais au niveau de l'école, presque rien de tout cela n'est nécessaire, le maximum est de mettre une indentation adéquate.

Sergey : C'est particulièrement important dans le cadre d'un projet sur lequel travaille un groupe de programmeurs. Parfois, vous devez comprendre les programmes des autres, et pour cela, certains accords doivent être respectés. Mais en tout état de cause, il existe des principes généraux qui ont peu de chances d'être significatifs en termes d'un problème. Je n'en soulignerai que quelques-uns:

  • structure du programme: les unités logiques doivent être allouées dans des blocs séparés (retraits dans le texte des programmes, fonctions, bibliothèques);
  • les noms des variables et des fonctions doivent parler d'eux-mêmes de ce qu'ils contiennent;
  • vous devez certainement utiliser des commentaires lors de la description des blocs d'algorithmes, chaque fonction doit contenir une spécification complète des paramètres d'entrée et des valeurs de retour.

- Que pensez-vous de l'utilisation de Boost à des fins éducatives?

Inessa: Je ne l'utilise pas au travail

Peter: En principe, positivement, mais ce n'est pas nécessaire à l'école.

Sergey: Dans la vraie programmation, je n'ai rien contre cette extension. Mais j'enseigne la programmation olympiade aux enfants, et là les étudiants ne pourront pas l'utiliser, car Boost n'est inclus dans l'ensemble standard de bibliothèques d'aucun des compilateurs C ++ standard. Il faut donc se contenter de ce qui est, par exemple, STL (Standard Template Library).

- Avez-vous une recette réussie pour préparer les élèves à la programmation des olympiades?

Inessa: Théorie de l'informatique plus les bases des mathématiques discrètes et des méthodes mathématiques de traitement des données. Et aussi une formation constante, intégrée au système.

Peter: Théorie de base, résolution de problèmes, compréhension du format de l'Olympiade, tests précis.

Sergey: Je pense que non seulement l'expérience, le temps, mais aussi l'âme devraient être investis dans l'enseignement des programmes pour les écoliers. Seul l'enseignant intéressé par la matière peut intéresser les élèves. Lors de l'enseignement de la programmation, il est important de sélectionner un groupe d'élèves talentueux, et dans une école secondaire, c'est très difficile à faire. Par conséquent, il est plus efficace de travailler dans des établissements d'enseignement complémentaire, où il est possible de travailler avec des enfants de différentes écoles

- Y a-t-il quelque chose dans votre programme qui le rend unique?

Inessa: Un moment clé dans la technique elle-même. Je dirige des groupes d'enfants formés par le niveau de formation et les capacités, pas par l'âge. L'éducation n'est pas seulement un modèle enseignant-élève, mais aussi un modèle élève-élève. Les aînés aident les plus jeunes: ils analysent les problèmes résolus, vérifient le style du code pour les programmes d'écriture et aident l'enseignant. Dans la salle de classe, l'environnement de la communauté des enfants est maintenu - une humeur de réussite, de promotion, de résultats. Nous faisons des événements de nature olympique, des formations externes ensemble, ensemble, avec joie.

Peter: Premièrement, les cours ont lieu entièrement en ligne, il est possible d'étudier à distance de n'importe où dans le monde. Deuxièmement, faute de calendrier, chaque élève est engagé à son rythme. Troisièmement, attention aux tests et à la recherche de bogues dans le code. Quatrièmement, une licence gratuite pour les matériaux que je développe.

Sergey: Tout d’abord, l’utilisation de la ressource de l’auteur «Programmer’s School» . Deuxièmement, l'utilisation de manuels imprimés sous copyright. Troisièmement, tout le matériel théorique est présenté dans des présentations pour illustrer plus clairement le matériel du programme éducatif.



À propos de l'auto-éducation


- Auto-apprentissage et formation régulière. Comment mieux le combiner?

Inessa: S'entraîner avec un professeur selon le schéma classique - cet automne est important pour maîtriser la base, développer un niveau, «se tenir sur l'aile». Lorsqu'un enfant devient lauréat, le gagnant des olympiades sérieuses est la poursuite de la formation classique, le processus de formation, les écoles pratiques, l'auto-éducation (cours à distance, formation régulière personnelle).

Peter: Combinez comme, par exemple, je sais. Les écoliers étudient le matériel par eux-mêmes, mais je vérifie personnellement les solutions aux problèmes, et les gars peuvent toujours me consulter si quelque chose ne leur est pas clair.

Sergey: C'est vrai, il est préférable de combiner l'autoformation avec une formation régulière. Cela vous permet d'apprendre plus rapidement le sujet de la programmation, car un enseignant talentueux peut correctement guider l'élève dans la bonne direction, lui dire quoi, où et comment.

- Ils disent que la programmation mérite d'être apprise jusqu'à un certain âge, et cet âge est inférieur à 30 ans. Ensuite, l'efficacité diminue considérablement. Que pensez-vous de ces restrictions d'âge?

Inessa: Bien sûr, ce serait bien d'apprendre tout à la fois jusqu'à l'âge de 30 ans, mais la vie change, les connaissances s'améliorent, les langues se développent. Par conséquent, la formation est continue tout au long de la vie. La programmation des Olympiades, qui nécessite de la vitesse, de la concentration psychologique, des heures d'entraînement - c'est pour les jeunes. Apprendre à programmer après 30 ans - je ne vois aucun problème ici s'il y a de la motivation et un état d'esprit mathématique.

Sergey: Fondamentalement, je suis d'accord. Mais il y a peut-être des exceptions. Après 30 ans, il y a des difficultés non seulement à apprendre quelque chose, mais avec la programmation elle-même. Bien sûr, cela se passe très bien et il n'y a pas de frontière claire. Avant, je pouvais faire de la programmation 10 heures par jour, mais maintenant - tirer. Par conséquent, je passe systématiquement de la programmation à l'enseignement de la programmation: je programme de moins en moins et j'enseigne plus.

- Que pensez-vous des nombreux cours pour programmeurs ouverts aujourd'hui? Ne pensez-vous pas qu'ils donnent des connaissances trop superficielles?

Inessa: Cours de discorde. Dans le processus de sélection de cours, il est toujours utile de regarder les premières conférences afin de corréler votre niveau et le niveau du cours, d'évaluer l'utilité des connaissances, etc. Par conséquent, je pense qu'une connaissance préalable du cours est requise.

Peter: Je pense qu'il y a des cours sensés et superficiels. De plus, beaucoup dépend de l'élève lui-même.

Sergey: Je ne vois rien de mal au fait qu'il existe des cours qui ne fournissent que des connaissances superficielles. Les enfants ont juste besoin de se familiariser avec ce sujet avant de s'inscrire à un cours sérieux visant à enseigner la programmation professionnelle. Et il ne peut pas y avoir beaucoup de cours professionnels: il n'y a tout simplement pas autant d'enfants capables d'apprendre une programmation sérieuse, c'est une direction assez étroite.

- Quelle a été la chose la plus difficile pour vous lors de votre propre formation? Quelles étapes pouvez-vous distinguer?

Inessa: La première étape est le développement initial, quand il semble que tout est nouveau et obscur. La deuxième étape est une étude approfondie du matériau, lorsque tout se met en place. À ce stade, les consultations avec les collègues sont importantes et, si possible, affinent le matériel enseigné. De plus, je considère qu'il est important de répéter constamment dans le processus d'enseignement et de motivation pour apprendre de nouvelles choses.

Sergey: Si vous vous souvenez que c'était en 1989, quand il n'y avait pas d'Internet, un ordinateur personnel et des enseignants, et seulement une calculatrice programmable avec des instructions, alors oui, il y avait certaines difficultés. Mais j'étais encore capable de maîtriser les principes de base de la programmation. Ensuite, j'étais en neuvième année. C'était la première étape.

L'étape suivante consiste à suivre une formation dans le cadre du Code de procédure pénale de la 10e à la 11e année sur les ordinateurs sans disque dur. Mais avec un clavier, un moniteur (qui était un téléviseur noir et blanc) et un professeur. J'ai ensuite étudié le Basic et le Pascal. Plus loin à l'université, mes capacités et mes connaissances dans le domaine de la programmation se sont considérablement élargies. Nous avons étudié C ++, Lisp, Prolog et Assembler. Et à partir de la cinquième année, j'ai commencé à m'enseigner moi-même, j'ai commencé à enseigner Pascal aux écoliers.

La prochaine étape importante de ma vie est liée à mon développement de la direction de la programmation Web dans la création de sites Web. Cette étape a peut-être bouleversé ma vie et attiré un grand nombre d'employeurs chez moi, dont je me défends encore :)

Ce n'est qu'en 2003 que je me suis intéressé à la programmation de l'Olympiade et que je suis passé à enseigner cela aux écoliers.

- Quelles erreurs avez-vous commises lors de votre propre formation? Que pouvez-vous conseiller à cet égard?

Inessa: Une erreur dans le processus d'apprentissage - une tentative de couvrir des informations disparates, une certaine quantité d'informations de mauvaise qualité. Je vous conseille d'utiliser des cours de haute qualité avec de bonnes critiques, des recommandations de collègues à leur sujet. Il est également important de prévoir clairement du temps pour la formation.

Sergey: Ma principale erreur est peut-être le mauvais choix d'outils de programmation pour créer des sites Web. J'utilise toujours la technologie de Microsoft: Windows + IIS + ASP + MSSQL. Tous les développements nécessitent non seulement une licence, mais également de grandes ressources informatiques. Il est préférable de s'appuyer sur un logiciel libre. A cette époque, et maintenant il est toujours pertinent de créer des programmes et de développer des sites pour Unix en utilisant Apache + PHP + MYSQL.

Source: https://habr.com/ru/post/fr433434/


All Articles