Programmieren als Sport: Was tun, um Wettbewerbe zu gewinnen?

Hallo Habr! Heute möchte ich Ihnen Andrey Chumachenko vorstellen, Leiter der Sportprogramm-Community in Irkutsk und preisgekrönter Teilnehmer an Programmierwettbewerben, darunter die ICPC und die nach I.V. benannte Allsibirische Olympiade. Pottosin.



Wir haben mit Andrey über Sportprogrammierung, Vorbereitung auf Wettbewerbe und seine Arbeit als Trainer gesprochen. Unter dem Schnitt - nützliche und schädliche Ratschläge für die Teilnehmer des Wettbewerbs, Motivationsfragen, Geschichten aus dem Wettbewerb, Einstellung zum Einheitlichen Staatsexamen und zur Schule für Sportprogrammierung in Irkutsk.





Finale des ICPC Student Team Programming Contest 2016 (Quelle: ICPC Live)



Andrey Chumachenko - Gründer und Leiter der Programmiergemeinschaft in Irkutsk, Masterstudent an der ISU für grundlegende Informatik, Gewinner des Halbfinales der Studenten-Weltmeisterschaft in der Programmierung der ICPC - 2018, 2019 (unter den GUS-Ländern), Gewinner der nach I.V. Pottosina - 2018, 2019 (unter den GUS-Ländern), Gewinner des Viertelfinals der Studenten-Weltmeisterschaft im Programmieren (unter Studenten Ostsibiriens) - 2018, 2019, Gewinner der Altai Universiade im Programmieren - 2019 (unter Studenten und Schülern Russlands), Finalist der BSUIR-Programmiermeisterschaft - 2018, 2019.Andrey wurde



auf unsere Radargeräte aufmerksam, als er einen kostenlosen Intensivkurs über Sportprogrammierungsprobleme am Irkutsk Boiling Point durchführte... Da das Thema heiß ist, haben wir uns entschlossen, alles im Detail herauszufinden.





Womit wird es gegessen?



- Was ist "Sportprogrammierung" und welche Aufgaben lösen sie dort jetzt?



- Für mich ist dies in erster Linie ein Wettbewerb, eine Vorbereitung auf sie und natürlich eine besondere Gemeinschaft von Menschen.



Schließlich ist das Programmieren für jemanden für Shipulin wie ein Biathlon: echter Sport, Leidenschaft, Feuer.


Was die Aufgaben betrifft, ist alles einfach: Sie benötigen diejenigen, die in fünf Stunden gelöst werden können, hauptsächlich algorithmische, mathematische und Aufgaben für die Implementierung.





2016 haben UrFU-Studenten gerade die internationale Programmiermeisterschaft Challenge 24 in Budapest gewonnen. Dann kamen sieben Teams aus Russland in die Top Ten (Quelle: codeforces.com)



- Was ist heute die beliebteste Sprache im Sportprogramm? Mein Freund an der Moskauer Poly für Angewandte Informatik (janka2330) studierte Sportprogramm als Fach und bestand den Test. Sagt, es war cool. Sie konkurrierten mit Kommilitonen und reichten Aufgaben bei spoj.pl (spoj.com) ein und schrieben in Ruby on Rails.



- Die Sprache ist sehr wettbewerbsfähig. Am häufigsten treffe ich C ++, Java und Python sind auch beliebt. Ein weiterer "Neuling" Kotlin hat in letzter Zeit an Dynamik gewonnen. Ruby on Rails oder einfach nur Ruby wird selten verwendet, aber in einigen Wettbewerben standen sie auf der Liste der unterstützten Sprachen. Ich selbst schreibe immer in C ++, meine Schüler auch. Es scheint mir am bequemsten zu sein, wenn Sie schnell etwas codieren müssen.





Sprachen, die am häufigsten in Wettbewerben verwendet werden





Wie man sich auf den Sieg vorbereitet



- Erzählen Sie uns von der Vorbereitung auf den Wettbewerb. Sie haben wahrscheinlich Ihre Geheimnisse.



- Während einiger Jahre in diesem Bereich wurde mir klar, dass jeder seine eigene Art zu trainieren hat. Für mich ist dies eine Übung, die das ganze Jahr über Probleme löst. Mit dem Erlernen des Fahrens lässt sich eine Analogie ziehen: Je mehr Stunden ich skatete, desto mehr Erfahrung sammelte ich. Also fahren wir mit den Schülern. Es gibt Verstöße gegen die Regeln, gefährliche Kurven, Geschwindigkeitsüberschreitungen, aber am Ende kommen wir zum geschätzten Ziel.



Um Probleme zu entwickeln, verwenden wir codeforces.com . Es finden regelmäßig Online-Runden statt, in denen Sie Probleme lösen müssen, die Punkte für die Bewertung des Teilnehmers bringen.


Dann verfolgen wir den Fortschritt, vergleichen die Ergebnisse und richten eine Nachbesprechung ein, um in der nächsten Runde erfolgreicher zu sein.





Archiv der Olympiadenprobleme codeforces.com



Wir sehen uns auch acm.timus.ru an - das größte Archiv von Programmierproblemen in Russland mit einem automatischen Überprüfungssystem. Viele Dinge sind jetzt auf YouTube erschienen, aber wir verwenden sie nicht ständig. Bei Interesse kann ich einem coolen polnischen Programmierer unter dem Spitznamen Errichto von dort aus raten, er hat seinen eigenen Kanal , dort kann man ein paar nützliche Dinge ausgraben.





Der zweite Kanal des polnischen Programmierers unter dem Spitznamen Errichto auf YouTube



Nun, und Bücher natürlich wie ohne sie: "The Art of Programming" von Donald Knuth zum Beispiel. Oder „Programmierprobleme bei der Olympiade. Wettbewerbsvorbereitungshandbuch "von Steven Skiena und Miguel Revilla.


Life Hacks für den Teilnehmer



- Ok, was kann Sie daran hindern, die Sportprogramm-Olympiade zu gewinnen?



- Wahrscheinlich ist der Feind aller Schüler Faulheit (nur ein Scherz). Aber im Ernst, Sie müssen sich auf Aufgaben konzentrieren und den Teil des Gehirns, der für alle Arten von täglichen Angelegenheiten verantwortlich ist, kurz ausschalten.



Es ist auch sehr schädlich, am Abend vor dem Wettkampf zu trainieren, insbesondere wenn Sie sich nicht auf ein Jahr vorbereitet haben.


Im Gegenteil, ich würde raten, eine Woche Pause einzulegen und nichts zu entscheiden. Wenn Sie lange Zeit gut gearbeitet haben, wird das Gehirn im Rest die Dinge in den angesammelten Archiven in Ordnung bringen.



Bei den Wettbewerben selbst ist es ein großer Fehler, nicht auf Ihr Kommando zu hören und der Lokomotive vorauszulaufen. Dies droht mit Geldstrafen und ähnlichen Problemen. Nun, perfektionistische Programmierer laufen Gefahr, mit einer Aufgabe herumzuspielen, um die perfekte Lösung und sauberen Code zu finden. Dies bedeutet nicht, dass Sie sowieso alles tun müssen, aber die Hauptsache ist, es nicht zu übertreiben.



- Was müssen Sie tun, um zu gewinnen?



- Nach meinen Gefühlen müssen Sie für einen großen Erfolg ein wenig wütend werden, aber zu Beginn Ihrer Karriere - nehmen Sie eine ruhige Haltung ein und halten Sie sich an den Plan.



Wann man Programmierer wird



- Erzählen Sie uns von Ihrem Weg in der Sportprogrammierung.



- Ich glaube, ich habe ziemlich spät angefangen, mich mit diesem Thema zu beschäftigen: Erst in den höheren Schulklassen begann ich ernsthaft, C ++ zu studieren und an den Olympiaden der Universitäten von Irkutsk teilzunehmen. Nachdem ich bereits an der ISU teilgenommen hatte, traf ich einen Lehrer, der die Sportprogrammierungsbewegung unterstützte, und begann bei ihm zu studieren. Nach und nach war Sportprogrammierung für mich kein Hobby mehr, ich nahm es ernst, nahm aktiv an Wettbewerben teil und entwickelte mich zu einem Trainer.





Andrei untersucht eines der Probleme der Olympiade im August-Trainingslager in Irkutsk



- denkst du, es ist zu spät, um in der High School zu beginnen? Kann Programmieren wirklich mit einem Profisport verglichen werden, bei dem Kinder fast ab drei Jahren geschickt werden?



- Natürlich nicht genug, um ein Kind in drei Jahren zum Erlernen von Algorithmen zu bewegen. Wenn es jedoch plötzlich interessant ist, ist es willkommen. Ich kenne sogar einige Programmier-Tutorials für Kinder im Vorschulalter.



Aber neben Schülern, Schülern und bereits versierten Programmierern traf ich bei Wettbewerben auch Leute aus der fünften oder sechsten Klasse, die den Schülern nicht unterlegen sind und sogar alles im Handumdrehen verstehen.


Je früher desto besser.



Die Prüfung ist ein schmerzhaftes Thema



- Wie beurteilen Sie das Unified State Exam und ähnliche Standards, an denen Wissen gemessen wird, seit wir über Schulkinder sprechen? Schließlich ist das Programmieren eine kreative, wenn auch rein technische Spezialität.



- Ich bin definitiv dafür, dass Fächer an Schulen und insbesondere an Universitäten freiwillig waren und eine Person aus einer ganzen Reihe von Möglichkeiten wählen konnte. Es ist viel angenehmer, auf diese Weise zu lernen, und das Ergebnis ist offensichtlich - man kann es nicht vergleichen, wenn man alles unter einem Stock macht.



Das Unified State Exam ist ein schmerzhaftes Thema. Hier kann ich die Geschichte eines anderen Artikels erzählen.



Das Unified State Exam enthält tatsächlich einige interessante und nützliche Aufgaben, wenn es um die Prüfung in Mathematik oder Informatik geht. Ja, es ist nicht perfekt, es gibt Mängel, Experimente, es gibt keinen individuellen Ansatz, aber sonst kann das Wissen der Absolventen nicht in großem Maßstab gewürdigt werden. Das Unified State Exam weist Mängel auf, aber es wurde noch nichts Besseres erfunden.



Die Zulassung zu Universitäten wird ebenfalls hauptsächlich von Lehrern gestaltet, aber es gibt weniger Objektivität und Standards, alles wird von einer kleinen Gruppe von Menschen kontrolliert. Mit diesem Ansatz möchte ich nicht einmal über Korruption, Bestechung und das Auffüllen unerwünschter Ereignisse sprechen.



Jetzt können Sie anhand der Ergebnisse der Olympiaden an Universitäten teilnehmen. Und das ist cool für Top-Studenten, für 10%. Was ist mit dem Rest? Nur die Prüfung.


Ja, es gibt einfache Olympiaden der dritten Stufe auf der Liste, aber sie sind oft noch umständlicher oder enthalten Probleme aus der Prüfung.



Eine andere Sache ist die Einstellung und Präsentation der Prüfung. All diese Hysterie, die vor allem von Eltern, Gesellschaft und Lehrern erfasst wird. Das ist überflüssig. Dieselben Lehrer sind oft völlig inkompetent, wenn es darum geht, Schulkinder auf die Prüfung vorzubereiten. Es geht nicht um die Schwierigkeit der Prüfung - es ist nichts Übernatürliches daran. Der Punkt liegt in der schwachen Ebene der Lehrer, ihren Gehältern, der Haltung des Staates ihnen gegenüber. Schulkinder leiden auch entlang der Kette.



Über Standards im Allgemeinen - natürlich sollte Bildung in Richtung Flexibilität gehen. Wie gesagt, es wäre gut für Schulkinder, die gewünschten Themen selbst auszuwählen. Die NUTZUNG ist in dieser Hinsicht nicht schlecht: Sie können sie in einer beliebigen Anzahl von Fächern belegen. Aber im Idealfall sollte man lernen, den Schüler als Individuum zu betrachten.



- Sehen Sie kein ähnliches Stereotyp bei der Bewertung des Wissens bei der Programmierung von Olympiaden? Oder ist dort alles anders?



- Die Essenz der Olympiadenprobleme liegt in ihrer immensen Nicht-Standardität. Ja, von Zeit zu Zeit stoßen Sie auf die Aufgaben "Knopfakkordeon". Es gibt Aufgaben für grundlegende, grundlegende Techniken und Algorithmen. Das Wichtigste bei Olympiaden ist jedoch, diese Techniken anwenden, kombinieren, anwenden und die mathematische Idee einer Lösung erkennen zu können. Dies ist definitiv eine einzigartige Fähigkeit, die über alle Vorlagen hinausgeht.



Warum lernen Schulkinder Sportprogrammierung?



- Was ist die Motivation von Schülern und Schülern, sich Sportprogrammgemeinschaften anzuschließen und an Olympiaden teilzunehmen? Was kann ihnen Sportprogrammierung beibringen, welche Fähigkeiten hilft es, sich zu entwickeln?



- Die Motivation ist völlig anders: Jemand kam, um eine Programmiersprache zu lernen und mehr Übung und algorithmisches Wissen zu erlangen, jemand wollte sich und sich selbst versuchen (die Teilnahme an den Olympiaden ist ein weiterer Test). Einige sammeln Portfolios für die Zulassung zur Universität oder für zukünftige Arbeiten, sie möchten von IT-Unternehmen während des Wettbewerbs wahrgenommen werden. Es gibt diejenigen, die kommen, um zu kommunizieren, die Gemeinschaft zu unterstützen und zu entwickeln.



. , , .


Und natürlich Teamwork, hier ist alles wie bei einem Erwachsenen: Um Ihr Projekt zur Umsetzung zu bringen, müssen Sie in der Lage sein, effektiv in einem Team zu arbeiten. Nun, die Entwicklung innerhalb der Programmierung (Sprachkenntnisse, Algorithmen) wurde nicht abgebrochen.



- Was machst du in deiner Sportprogramm-Community?



- Heute trainiere ich Studenten und wir gehen zu Olympiaden und Wettbewerben im Sportprogramm. Unter meinen Studenten sind Preisträger des Viertelfinals der Studenten-Programmier-Weltmeisterschaft (unter Studenten Ostsibiriens) 2019, Preisträger der sibirischen Website des Halbfinales der Studenten-Programmier-Weltmeisterschaft ICPC 2019, Preisträger der Altai Universiade im Programm 2019, Finalisten der Pottosin-Olympiade 2018 und 2019.



Es ist geplant, eine vollwertige Sportprogrammschule zu schaffen, in der mit Kindern ab der fünften Klasse gelernt werden kann. Hoffentlich starten wir es im Oktober.



Ich versuche auch, Beziehungen zu IT-Unternehmen aufzubauen, um Beschäftigungsmöglichkeiten für meine Studenten zu erhalten.



Außerdem organisieren wir Programmierwettbewerbe und haben vor nicht allzu langer Zeit ein Intensivprogramm abgehalten, das 11 Tage dauerte. Fast jeden Tag gab es einen fünfstündigen Wettbewerb, gefolgt von einer Analyse der Probleme - der sogenannten Fehlerarbeit und Vorlesungen (eine kleine Theorie über Algorithmen). Ich und mein Freund von MEPhI fungierten als Trainer. Die Teilnehmer des Intensivkurses waren Schüler des Trainingszentrums ENTER Olympiad aus Ulan-Ude (Republik Burjatien) und Studenten aus Irkutsk, die regelmäßig an Olympiaden für Sportprogramme teilnehmen.











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



- Ich denke es ist gut. Ja, Sie müssen schnell arbeiten, aber gleichzeitig klar, da das System die Aufgabe sonst nicht akzeptiert. Es gibt auch Strafen für eine falsche Antwort, die niemand erhalten möchte. Sie müssen auf Details achten, damit das Verständnis für das Problem bei den Olympiaden perfekt ist.



Die Code-Sauberkeit leidet manchmal, da der Wartungszyklus nur fünf Stunden beträgt. Je mehr Erfahrung ein Teilnehmer hat, desto genauer befolgen sie den Code.



- Teilen Sie interessante Geschichten aus dem Wettbewerb.



- Alle unsere lustigen Geschichten beziehen sich normalerweise auf Aufgaben. Zum Beispiel hatte ich einmal lange Zeit mit einer Lösung zu kämpfen, weil ich nicht bemerkte, dass der Ausdruck "Keine Lösung" mit den an einer Stelle neu angeordneten Buchstaben angezeigt werden musste - keine Lösung.



Oder beim Viertelfinale der Weltmeisterschaft im letzten Jahr haben wir das Problem zwei Sekunden vor dem Ende des Wettbewerbs zur Überprüfung an das System gesendet, und am Ende wurde das Problem erfolgreich gelöst. Solche Dinge finden immer auf Emotionen statt, die nur für Aufregung sorgen.






Eine Minute Werbung für unseren Beschleuniger



für KI-Projekte Wir haben begonnen, Bewerbungen für Archipel 20.35 anzunehmen - eine Bildungsintensität für diejenigen, die Projekte mit Methoden des maschinellen Lernens und der Datenanalyse durchführen. Das Projekt kann kommerziell, sozial, wissenschaftlich sein - oder Ihre Version schreiben. Um 20.35 Uhr Archipel gibt es eine große Chance, sich und Ihr Projekt zu verbessern, ein Team zusammenzustellen, einen Zuschuss zu erhalten und einen Sponsor zu finden, da Entwicklungsfonds und Unternehmen, die KI implementieren, Interesse an Entwicklungen bekundet haben.



Das Auswahl- und Vorbeschleunigungstraining ist kostenlos. Und wenn Sie über Ihr Projekt auf Habré schreiben, erhalten Sie ein Plus in der Qualifikationsbewertung! In unserem Blog werden wir Sie über die interessantesten Projekte informieren.






All Articles