La programmation en tant que sport: que faire pour gagner des compétitions

Bonjour, Habr! Aujourd'hui, je veux vous présenter Andrey Chumachenko, chef de la communauté de programmation sportive à Irkoutsk et participant primé à des concours de programmation, y compris l'ICPC et l'Olympiade de toute la Sibérie nommée d'après I.V. Pottosin.



Nous avons discuté avec Andrey de la programmation sportive, de la préparation aux compétitions et de son travail d'entraîneur. Sous la coupe - conseils utiles et nuisibles aux participants du concours, questions de motivation, récits de la compétition, attitude à l'égard de l'examen d'État unifié et de l'école de programmation sportive d'Irkoutsk.





Finales du concours de programmation des équipes d'étudiants de l'ICPC 2016 (source: ICPC Live)



Andrey Chumachenko - fondateur et leader de la communauté de programmation à Irkoutsk, étudiant à la maîtrise à l'ISU en informatique fondamentale, vainqueur des demi-finales du championnat du monde étudiant en programmation ICPC - 2018, 2019 (parmi les pays de la CEI), vainqueur de l'Olympiade de toute la Sibérie du nom de I.V. Pottosina - 2018, 2019 (parmi les pays de la CEI), vainqueur des quarts de finale du championnat du monde étudiant en programmation (parmi les étudiants de Sibérie orientale) - 2018, 2019, vainqueur de l'Universiade de l'Altaï en programmation - 2019 (parmi les étudiants et écoliers de Russie), finaliste du championnat de programmation BSUIR - 2018, 2019.Andrey a



attiré l'attention de nos radars lorsqu'il a animé un cours intensif gratuit sur les problèmes de programmation sportive au point d'ébullition d'Irkoutsk.... Le sujet étant brûlant, nous avons décidé de tout découvrir en détail.





Avec quoi est-il mangé



- Qu'est-ce que la "programmation sportive" et quelles tâches y résolvent-elles maintenant?



- Pour moi, c'est avant tout un concours, une préparation pour eux et, bien sûr, une communauté spéciale de personnes.



Après tout, la programmation pour quelqu'un est comme le biathlon pour Shipulin: vrai sport, passion, feu.


Quant aux tâches, tout est simple: elles prennent celles qui peuvent être résolues en cinq heures, principalement algorithmiques, mathématiques et tâches de mise en œuvre.





2016, les étudiants d'UrFU viennent de remporter le championnat international de programmation Challenge 24 à Budapest. Puis sept équipes de Russie sont entrées dans le top dix (source: codeforces.com)



- Quelle est la langue la plus populaire dans la programmation sportive aujourd'hui? Mon ami au Poly de Moscou en informatique appliquée (janka2330) a étudié la programmation sportive en tant que matière et a réussi le test. Dit que c'était cool. Ils ont rivalisé avec d'autres étudiants et soumis des tâches à spoj.pl (spoj.com) et ont écrit en Ruby on Rails.



- La langue est très compétitive. Le plus souvent, je rencontre C ++, Java et Python sont également populaires. Un autre "newbie" Kotlin a pris de l'ampleur ces derniers temps. Ruby on Rails, ou simplement Ruby, est rarement utilisé, mais dans certaines compétitions, ils figuraient sur la liste des langues prises en charge. J'écris moi-même toujours en C ++, tout comme mes étudiants. Cela me semble le plus pratique lorsque vous devez coder rapidement quelque chose.





Langues les plus couramment utilisées dans les compétitions





Comment se préparer à gagner



- Parlez-nous de la préparation du concours. Vous avez probablement vos secrets.



- Depuis plusieurs années passées dans ce domaine, je me suis rendu compte que chacun a sa propre façon de s'entraîner. Quant à moi, c'est de la pratique, résoudre des problèmes tout au long de l'année. Une analogie peut être faite avec l'apprentissage de la conduite: plus je patinais d'heures, plus je gagnais d'expérience. Nous roulons donc avec les étudiants. Il y a des violations des règles, des virages dangereux, des excès de vitesse, mais à la fin nous arrivons à l'objectif chéri.



Pour développer des problèmes, nous utilisons codeforces.com , il y a régulièrement des tournées en ligne, au cours desquelles vous devez résoudre des problèmes qui rapportent des points à la note du participant.


Ensuite, nous suivons les progrès, comparons les résultats et organisons un débriefing pour avoir plus de succès au prochain tour.





Archive des problèmes de l'Olympiade codeforces.com



Nous regardons également acm.timus.ru - la plus grande archive de problèmes de programmation en Russie avec un système de vérification automatique. Beaucoup de choses sont apparues sur YouTube maintenant, mais nous ne les utilisons pas de façon continue. Si cela vous intéresse, je peux conseiller un programmeur polonais sympa sous le pseudo Errichto à partir de là, il a sa propre chaîne , vous pouvez y trouver un tas de choses utiles.





La deuxième chaîne du programmeur polonais sous le surnom d'Errichto sur YouTube



Eh bien, et des livres, bien sûr, comme sans eux: "The Art of Programming" de Donald Knuth, par exemple. Ou «Problèmes de programmation Olympiade. Guide de préparation du concours "par Steven Skiena et Miguel Revilla.


Astuces de vie pour le participant



- Ok, qu'est-ce qui peut vous empêcher de gagner l'Olympiade de la programmation sportive?



- Probablement l'ennemi de tous les étudiants est la paresse (je plaisante). Mais sérieusement, vous devez vous concentrer sur les tâches et éteindre brièvement cette partie du cerveau responsable de toutes sortes d'activités quotidiennes.



Il est également très néfaste de s'entraîner la veille de la compétition, surtout si vous ne vous êtes pas préparé depuis un an.


Au contraire, je conseillerais de prendre un répit d'une semaine et de ne rien décider. Si vous avez bien travaillé pendant longtemps, le cerveau pendant le reste mettra les choses en ordre dans les archives accumulées.



Aux compétitions elles-mêmes, c'est une grosse erreur de ne pas écouter votre commande et de courir devant la locomotive. Cela menace d'amendes et de problèmes similaires. Eh bien, les programmeurs perfectionnistes courent le risque de jouer avec une tâche à la recherche de la solution parfaite et d'un code propre. Cela ne signifie pas que vous devez tout faire de toute façon, mais l'essentiel est de ne pas en faire trop.



- Que devez-vous faire pour gagner?



- Selon mes sentiments, pour réussir, vous devez vous mettre un peu en colère, mais au début de votre carrière, adoptez une attitude calme et respectez le plan.



Quand devenir programmeur



- Parlez-nous de votre parcours dans la programmation sportive.



- Je pense que j'ai commencé à m'immerger assez tard dans ce sujet: ce n'est que dans les lycées que j'ai sérieusement commencé à étudier le C ++ et à participer aux Olympiades organisées par les universités d'Irkoutsk. Puis, étant déjà entré à l'ISU, j'ai rencontré un enseignant qui soutenait le mouvement de programmation sportive et j'ai commencé à étudier avec lui. Donc, petit à petit, la programmation sportive pour moi a cessé d'être juste un passe-temps, je l'ai pris au sérieux, j'ai commencé à participer activement à des compétitions et je suis devenu entraîneur.





Andrey examine l'un des problèmes des Olympiades au camp d'entraînement d'août à Irkoutsk



- pensez-vous qu'il est trop tard pour commencer au lycée? La programmation peut-elle vraiment être comparée à un sport professionnel, dans lequel les enfants sont envoyés presque dès l'âge de trois ans?



- Bien sûr, pas assez pour mettre un enfant en trois ans à apprendre les algorithmes, même s'il trouve soudainement cela intéressant, alors bienvenue. Je connais même quelques tutoriels de programmation pour les enfants d'âge préscolaire.



Mais, en plus des lycéens, des étudiants et des programmeurs déjà accomplis, lors de concours, j'ai rencontré des gars de la cinquième ou de la sixième année, qui ne sont pas inférieurs en connaissances aux étudiants, et même saisissent tout à la volée.


Par conséquent, le plus tôt sera le mieux.



L'examen est un sujet douloureux



- Puisque nous parlons d'écoliers, que pensez-vous de l'UTILISATION et des normes similaires par lesquelles les connaissances sont mesurées? Après tout, la programmation est une spécialité créative, quoique purement technique.



- Je suis définitivement pour le fait que les matières dans les écoles, et en particulier dans les universités, étaient facultatives et qu'une personne pouvait choisir parmi toute la variété qui lui plaisait. C'est beaucoup plus agréable d'étudier de cette manière, et le résultat est évident - on ne peut pas comparer quand on fait tout sous un bâton.



Quant à l'examen d'État unifié, c'est un sujet douloureux. Ici, je peux raconter l'histoire d'un autre article.



L'UTILISATION contient en fait pas mal de tâches intéressantes et utiles lorsqu'il s'agit de l'examen en mathématiques ou en informatique. Oui, ce n'est pas parfait, il y a des défauts, des expériences, il n'y a pas d'approche individuelle, mais sinon la connaissance de masse des diplômés ne peut être appréciée. L'examen d'État unifié a des défauts, mais rien de mieux n'a encore été inventé.



Les admissions dans les universités sont également principalement conçues par des enseignants, mais il y a moins d'objectivité et de normes, tout est contrôlé par un petit groupe de personnes. Avec cette approche, je ne veux même pas parler de corruption, de pots-de-vin et de saturation de personnes indésirables.



Vous pouvez désormais entrer dans les universités en fonction des résultats des Olympiades. Et c'est cool pour les meilleurs étudiants, pour 10%. Qu'en est-il du reste? Seul l'examen.


Oui, il existe de simples Olympiades de troisième niveau dans la liste, mais elles sont souvent encore plus gênantes ou contiennent des problèmes d'examen.



Une autre chose est l'attitude et la présentation de l'examen. Toute cette hystérie qui est rattrapée par les parents, la société, les enseignants, avant tout. C'est trop. Les mêmes enseignants sont souvent complètement incompétents pour préparer les écoliers à l'examen. Il ne s'agit pas de la difficulté de l'examen - il n'y a rien de surnaturel à ce sujet. Le problème réside dans le faible niveau des enseignants, leurs salaires, l'attitude de l'Etat à leur égard. Les écoliers souffrent également le long de la chaîne.



Concernant les normes en général - bien entendu, l'éducation doit évoluer vers la flexibilité. Comme je l'ai dit, il serait bon que les écoliers choisissent eux-mêmes les matières qui les intéressent. L'examen n'est pas mal à cet égard: vous pouvez le passer dans n'importe quel nombre de matières. Mais idéalement, il faut apprendre à regarder l'étudiant comme un individu.



- Ne voyez-vous pas un stéréotype similaire dans l'évaluation des connaissances lors de la programmation des olympiades? Ou est-ce que tout est différent là-bas?



- L'essence des problèmes des Olympiades réside dans leur immense non-standardité. Oui, de temps en temps, vous rencontrez les tâches "accordéon bouton". Il existe des tâches pour les techniques et algorithmes standard et fondamentaux. Mais le plus important dans les olympiades est de pouvoir appliquer ces techniques, les combiner, aller au point de les utiliser et voir l'idée mathématique d'une solution. C'est définitivement une capacité unique qui va au-delà de tous les modèles.



Pourquoi les écoliers apprennent-ils la programmation sportive



- Quelle est la motivation des élèves et des écoliers à rejoindre les communautés de programmation sportive et à participer aux Olympiades? Que peut leur apprendre la programmation sportive, quelles compétences contribue-t-elle à développer?



- La motivation est complètement différente: quelqu'un est venu pour apprendre un langage de programmation et acquérir plus de pratique et de connaissances algorithmiques, quelqu'un a donc voulu essayer lui-même et sa force (la participation aux Olympiades est un autre test). Certains collectent des portefeuilles pour l'admission à l'université ou pour des travaux futurs, ils veulent être remarqués par les entreprises informatiques lors du concours. Il y a ceux qui viennent pour la communication, pour soutenir et développer la communauté.



. , , .


Et, bien sûr, le travail en équipe, ici tout est comme un adulte: pour mener à bien votre projet, il faut être capable de travailler efficacement en équipe. Eh bien, le développement en programmation (connaissance du langage, algorithmes) n'a pas été annulé.



- Que faites-vous au sein de votre communauté de programmation sportive?



- Aujourd'hui je forme des étudiants, et nous allons aux Olympiades et aux compétitions en programmation sportive. Parmi mes étudiants se trouvent les lauréats des quarts de finale du championnat du monde étudiant en programmation (parmi les étudiants de Sibérie orientale) 2019, les lauréats du site sibérien des demi-finales du championnat du monde étudiant en programmation ICPC 2019, les lauréats de l'Universiade de l'Altaï en programmation-2019, les finalistes de l'Olympiade de Pottosin 2018 et 2019.



Il est prévu de créer une école de programmation sportive à part entière où il sera possible d'étudier avec des enfants dès la cinquième année. J'espère que nous le lancerons en octobre.



J'essaie également de nouer des relations avec des entreprises informatiques pour obtenir des opportunités d'emploi pour mes étudiants.



De plus, nous organisons des concours de programmation, et il n'y a pas si longtemps, nous avons organisé une session intensive de 11 jours. Presque chaque jour, il y avait un concours de cinq heures, suivi d'une analyse des problèmes - le soi-disant travail sur les erreurs, et des conférences (une petite théorie sur les algorithmes). Mon ami de MEPhI et moi avons agi en tant que formateurs. Les participants à l'intensif étaient des écoliers du centre de formation ENTER Olympiad d'Oulan-Ude (République de Bouriatie) et des étudiants d'Irkoutsk, qui participent régulièrement à la programmation sportive des Olympiades.











— . , , . : , , . — — , , . : ? — , , …



- Je pense que c'est bien. Oui, vous devez travailler rapidement, mais en même temps clairement, car sinon le système n'acceptera pas la tâche. Pour la mauvaise réponse, il y a aussi des pénalités que personne ne veut recevoir. Il faut être attentif aux détails pour que le niveau de compréhension du problème soit parfaitement gonflé parmi les Olympiades.



La propreté du code en souffre parfois, car le cycle de maintenance n'est que de cinq heures, mais plus un participant a d'expérience, plus il suit le code de près.



- Partagez des histoires intéressantes de la concurrence.



- Toutes nos histoires amusantes sont généralement liées à des tâches. Par exemple, j'ai déjà eu du mal à trouver une solution pendant longtemps, car je n'avais pas remarqué que la phrase pas de solution devait être affichée avec les lettres réorganisées au même endroit - pas de soluiton.



Ou, lors des quarts de finale du Championnat du Monde l'année dernière, nous avons envoyé le problème au système pour vérification deux secondes avant la fin de la compétition, et finalement le problème a été résolu avec succès. De telles choses se produisent toujours sur des émotions qui ne font qu'ajouter de l'excitation.






Une minute de publicité sur notre accélérateur de projets IA



Nous avons commencé à accepter les candidatures pour Archipelago 20.35 - un programme éducatif intensif pour ceux qui réalisent des projets en utilisant des méthodes d'apprentissage automatique et d'analyse de données. Le projet peut être commercial, social, scientifique - ou rédiger votre version. À 20h35 Archipelago, il y aura une grande chance de vous mettre à niveau vous et votre projet, de constituer une équipe, d'obtenir une subvention, de trouver un sponsor, car les fonds de développement et les entreprises qui mettent en œuvre l'IA ont exprimé leur intérêt pour les développements.



La sélection et le programme de formation pré-accélération sont gratuits. Et si vous écrivez sur votre projet sur Habré, vous obtenez un plus dans la note de qualification! Nous vous parlerons des projets les plus intéressants de notre blog.






All Articles