Programming as a Sport: What to Do to Win Competitions

Hello, Habr! Today I want to introduce you to Andrey Chumachenko, head of the sports programming community in Irkutsk and an award-winning participant in programming competitions, including the ICPC and the All-Siberian Olympiad named after I.V. Pottosin.



We talked with Andrey about sports programming, preparation for competitions and his work as a coach. Under the cut - useful and harmful advice to the participants of the competition, questions of motivation, stories from the competition, attitude to the Unified State Exam and the school of sports programming in Irkutsk.





ICPC Student Team Programming Contest 2016 Finals (source: ICPC Live)



Andrey Chumachenko - founder and leader of the programming community in Irkutsk, a master's student at ISU in fundamental informatics, winner of the semifinals of the student world championship in programming ICPC - 2018, 2019 (among the CIS countries), winner of the All-Siberian Olympiad named after I.V. Pottosina - 2018, 2019 (among the CIS countries), winner of the quarterfinals of the student world championship in programming (among students of Eastern Siberia) - 2018, 2019, winner of the Altai Universiade in programming - 2019 (among students and schoolchildren of Russia), finalist of the BSUIR programming championship - 2018, 2019.Andrey



came to the attention of our radars when he conducted a free intensive course on sports programming problems in the Irkutsk Boiling Point... Since the topic is hot, we decided to find out everything in detail.





What is it eaten with



- What is "sports programming" and what tasks are they solving there now?



- For me, this is primarily a competition, preparation for them and, of course, a special community of people.



After all, programming for someone is like biathlon for Shipulin: real sport, passion, fire.


As for the tasks, everything is simple: they take those that can be solved in five hours, mainly algorithmic, mathematical and tasks for implementation.





2016, UrFU students have just won the Challenge 24 international programming championship in Budapest. Then seven teams from Russia entered the top ten (source: codeforces.com)



- What is the most popular language in sports programming today? My friend at the Moscow Poly in Applied Informatics (janka2330) studied sports programming as a subject and passed the test. Says it was cool. They competed with fellow students and submitted tasks to spoj.pl (spoj.com), and wrote in Ruby on Rails.



- The language is highly competitive. Most often I meet C ++, Java and Python are also popular. Another "newbie" Kotlin has been gaining momentum lately. Ruby on Rails, or just Ruby, is rarely used, but in some competitions they were on the list of supported languages. I myself always write in C ++, and so do my students. It seems to me the most convenient when you need to quickly code something.





Languages ​​most commonly used in competitions





How to prepare to win



- Tell us about the preparation for the competition. You probably have your secrets.



- For several years spent in this area, I realized that everyone has their own way of training. As for me, this is practice, solving problems throughout the year. An analogy can be drawn with learning to drive: the more hours I skated, the more experience I gained. So we ride with the students. There are violations of the rules, dangerous turns, speeding, but in the end we get to the cherished goal.



To develop problems, we use codeforces.com , where online rounds are regularly held, during which you need to solve problems that bring points to the participant's rating.


Then we track progress, compare results and set up a debriefing so that we can be more successful in the next round.





Archive of Olympiad problems codeforces.com



We also look at acm.timus.ru - the largest archive of programming problems in Russia with an automatic checking system. A lot of things have appeared on YouTube now, but we do not use it on an ongoing basis. If interested, I can advise a cool Polish programmer under the nickname Errichto from there, he has his own channel , there you can dig up a bunch of useful things .





The second channel of the Polish programmer under the nickname Errichto on YouTube



Well, and books, of course, as without them: "The Art of Programming" by Donald Knuth, for example. Or “Olympiad programming problems. Competition Preparation Guide "by Steven Skiena and Miguel Revilla.


Life hacks for the participant



- Ok, what can prevent you from winning the sports programming Olympiad?



- Probably the enemy of all students is laziness (just kidding). But seriously, you need to be focused on tasks and briefly turn off the part of the brain that is responsible for all sorts of daily affairs.



It is also very harmful to train the night before the competition, especially if you have not prepared for a year.


On the contrary, I would advise to take a week-long respite and not decide anything. If you have worked well for a long time, then the brain during the rest will put things in order in the accumulated archives.



At the competitions themselves, it is a big mistake not to listen to your command and run ahead of the locomotive. This threatens with fines and similar troubles. Well, perfectionist programmers run the risk of messing around with one task in pursuit of the perfect solution and clean code. This does not mean that you need to do everything anyhow, but the main thing is not to overdo it.



- What do you need to do to win?



- According to my feelings, for great success you need to get a little angry, but at the beginning of your career - take a calm attitude, plus stick to the plan.



When to become a programmer



- Tell us about your path in sports programming.



- I think that I began to immerse myself in this topic rather late: it was only in the senior grades of school that I seriously began to study C ++ and participate in the Olympiads held by the universities of Irkutsk. Then, having already entered the ISU, I met a teacher who supported the sports programming movement, and began to study with him. So, little by little, sports programming for me ceased to be just a hobby, I took it seriously, began to actively participate in competitions and grew to a coach.





Andrei examines one of the Olympiad problems at the August training camp in Irkutsk



- do you think it's too late to start in high school? Can programming really be compared to a professional sport, in which children are sent almost from the age of three?



- Of course, not enough to put a child in three years to learn algorithms, although if he suddenly finds it interesting, then welcome. I even know some programming tutorials for preschoolers.



But, in addition to high school students, students and already accomplished programmers, at competitions I met guys from the fifth or sixth grades, who are not inferior in knowledge to students, and even grasp everything on the fly.


Therefore, the sooner the better.



The exam is a sore subject



- Since we are talking about schoolchildren, how do you feel about the USE and similar standards by which knowledge is measured? After all, programming is a creative specialty, albeit a purely technical one.



- I am definitely for the fact that subjects in schools, and especially in universities, were optional, and a person could choose from a whole variety of what he likes. It is much more pleasant to study in this way, and the result is obvious - you cannot compare when you do everything under a stick.



As for the Unified State Exam, this is a sore subject. Here I can tell the story of another article.



The Unified State Exam actually contains quite a few interesting and useful tasks when it comes to the exam in mathematics or computer science. Yes, it is not perfect, there are flaws, experiments, there is no individual approach, but otherwise the mass knowledge of graduates cannot be appreciated. The Unified State Exam has flaws, but nothing better has been invented yet.



Admissions to universities are also mainly designed by teachers, but there is less objectivity and standards, everything is controlled by a small group of people. With this approach, I don't even want to talk about corruption, bribes and the filling up of unwanted people.



Now you can enter universities based on the results of the Olympiads. And that's cool for top students, for 10%. What about the rest? Only the exam.


Yes, there are simple third-level Olympiads from the list, but they are often even more awkward or contain tasks from the exam.



Another thing is the attitude and presentation of the exam. All that hysteria that is caught up by parents, society, teachers, above all. It's too much. The same teachers are often completely incompetent in preparing schoolchildren for the exam. It's not about the difficulty of the exam - there is nothing supernatural about it. The point is in the weak level of teachers, their salaries, the attitude of the state towards them. Schoolchildren also suffer along the chain.



About standards in general - of course, education should move towards flexibility. As I said, it would be good for schoolchildren to choose the subjects of interest themselves. The USE is not bad in this regard: you can take it in any number of subjects. But ideally one should learn to look at the student as an individual.



- Don't you see a similar stereotype in assessing knowledge at programming olympiads? Or is everything different there?



- The essence of the Olympiad problems lies in their immense non-standardness. Yes, from time to time you come across the "button accordion" tasks. There are tasks for standard, fundamental techniques and algorithms. But the most important thing in olympiads is to be able to apply these techniques, combine them, get to the point of using them, and see the mathematical idea of ​​a solution. This is definitely a unique ability that goes beyond all templates.



Why do schoolchildren learn sports programming



- What is the motivation of students and schoolchildren to join sports programming communities and participate in Olympiads? What can sports programming teach them, what skills does it help to develop?



- The motivation is completely different: someone came to learn a programming language and get more practice and algorithmic knowledge, someone thus wanted to try himself and his strength (participation in the Olympiads is another test). Some collect portfolios for admission to a university or for future work, they want to be noticed by IT companies during competitions. There are those who come for the sake of communication, to support and develop the community.



. , , .


And, of course, teamwork, here everything is like adults: in order to bring your project to implementation, you need to be able to work effectively in a team. Well, development within programming (knowledge of the language, algorithms) has not been canceled.



- What are you doing within your sports programming community?



- Today I train students, and we go to Olympiads and competitions in sports programming. Among my students are prize-winners of the quarterfinals of the student world programming championship (among students of Eastern Siberia) 2019, prize-winners of the Siberian site of the semifinals of the student world programming championship ICPC 2019, prize-winners of the Altai Universiade in programming 2019, finalists of the Pottosin Olympiad 2018 and 2019.



There are plans to create a full-fledged sports programming school where it will be possible to study with children from the fifth grade. Hopefully we'll launch it in October.



I also try to build relationships with IT companies to get job opportunities for my students.



Plus, we organize programming competitions, and not so long ago we held an intensive, which lasted 11 days. Almost every day there was a five-hour competition, followed by analysis of problems - the so-called work on errors, and lectures (a little theory about algorithms). I and my friend from MEPhI acted as trainers. The participants of the intensive were schoolchildren from the ENTER Olympiad training center from Ulan-Ude (Republic of Buryatia) and students from Irkutsk, who regularly participate in sports programming Olympiads.











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



- I think it's good. Yes, you need to work quickly, but at the same time clearly, because otherwise the system will not accept the task. There are also penalties for a wrong answer that no one wants to receive. You need to be attentive to details, so the level of understanding of the problem is pumped up perfectly among the Olympiads.



Code cleanliness sometimes suffers, as the maintenance cycle is only five hours, but the more experience a participant has, the more closely they follow the code.



- Share interesting stories from the competition.



- All our funny stories are usually related to tasks. For example, I once struggled with a solution for a long time, because I did not notice that the phrase no solution needed to be displayed with the letters rearranged in one place - no soluiton.



Or, at the quarterfinals of the World Championship last year, we sent the problem to the system for verification two seconds before the end of the competition, and in the end the problem was successfully solved. Such things always take place on emotions that only add excitement.






A minute of advertising about our AI-projects accelerator



We have started accepting applications for Archipelago 20.35 - an educational intensive for those who make projects using machine learning and data analysis methods. The project can be commercial, social, scientific - or write your version. At 20.35 Archipelago, there will be a great chance to improve yourself and your project, assemble a team, get a grant, find a sponsor, since development funds and companies that are implementing AI have expressed interest in developments.



Selection and pre-acceleration training program are free. And if you write about your project on Habré, you get a plus in the qualifying rating! We will tell you about the most interesting projects in our blog.






All Articles