How to become the first in sports programming: ITMO University shares its experience. Part 2

    We continue to talk about the How to Win Coding Competitions: Secrets of Champions course , which ITMO University launched on edX this year (read the first part of the article here ).

    In the second part of our conversation with the authors and instructors of the course - Maxim Buzdalov and Pavel Krotkov, champions of ACM ICPC, and Daria Yakovleva, winner of Google Code Jam for Women, we will talk about whether the winners of the olympiads have the right attitude, how to develop the skill to find creative solutions and who will benefit from the ITMO University Champions course.


    Michael Pollak / Flickr / CC

    Attitude vs experience: what role does psychology play in victory


    Maxim Buzdalov believes that the success of a team (or a participant, when it comes to single player competition) depends on the training and coordination of work, which is gained over long hours of practical training - the more participants train, the less their result depends on the correct mood or lack thereof.

    I would not say that “attitude” plays a significant role in success. The higher the level of the team, the higher the intelligence of its members, and the less often do self-deception methods aimed at increasing self-confidence and “raising the spirit”

    - Maxim Buzdalov

    But the compatibility of the participants with each other, and their personal qualities, according to Maxim, play a very big role. At the same time, some of these qualities, both positive and negative, can manifest themselves only in the final competition, from the awareness of responsibility: before the team was responsible only for itself, and in the final it represents the whole university or even the country. An example from Maxim’s personal experience (2009 ACM ICPC champion):

    Of course, the presence of a “fighting spirit” built into the heads can help a lot: for example, in 2009, our rivals, the team of Tsinhua University, decided four or something, tasks, and broke into second place, securing a gold medal and a title champion of Asia. A good example ...

    ... if not for the fact that we won the first place, who, a few minutes after the start of the last hour, passed their last ninth task, and for the remaining hour did not have time to write anything sensible. True, we, of course, did not “give up”, just the situation turned out in such a way that all the previous four hours we had tasks in the writing queue, and then they suddenly ended. We wrote a solution to the tenth problem, but we did not have enough time for it

    - Maxim Buzdalov



    The ITMO University 2016 team at ACM ICPC : Adam Bardashevich, Anton Kovsharov, Andrey Stankevich (trainer) and Vladimir Smykalov

    Pavel Krotkov clarifies - for the team of professionals, “stress on victory” may be relegated to the background, but beginners without olympiads she can not do:

    My experience says that the main thing [for a beginner] is still psychology and stress tolerance. Andrei Stankevich jokingly said that in order to develop his career as a trainer, he needed to get a psychologist / psychiatrist education

    - Pavel Krotkov

    Daria Yakovleva emphasizes: if the stage of the competition didn’t immediately happen, the participants can really “drop their hands” - but additional training, rather than any psychological methods, helps to deal with the problem most of all. However, a good mood and well-being before the start of the competition fade into the background if the team or one of its participants does not have a special interest in the process.

    People who are not experiencing pleasure in solving problems, of course, will not receive any prizes, they simply do not have a chance

    - Maxim Buzdalov

    Life hacks and tips


    We invited the authors of the course “How to Win in Programming Competitions: Secrets of Champions” to share tips and tricks useful in olympiad programming - we got a few big topics:

    Practice

    Practice, practice and practice again. The main life hack is to solve one problem every day, even on weekends, and not to miss a single day

    - Daria Yakovleva

    Maxim Buzdalov and Pavel Krotkov note that constant training helps not only achieve success in solving problems, but also makes it possible to foresee the correct course of thought. However, one online course to develop such an ability will be clearly not enough (for students to complete it, it will take 4-6 hours a week) - they will have to solve problems every day (by the way, the course authors give tips on how to continue regular training on their own).

    The flair (or fine tuning in the brain of heuristics with which to prioritize the search for directions of thought) can be developed only when solving a very large number of tasks. The load offered by the course on this topic - one or three Olympiad tasks per week for four weeks - is obviously insufficient. For the development of intuition, it is necessary to solve Olympiad problems of various degrees of complexity for a long time and regularly (from subjectively light to subjectively excessive)

    - Maxim Buzdalov

    When you saw a thousand tasks with different algorithms and ideas, it’s much easier to understand which direction to go in search of a solution. In this sense, the course can lay some foundation and show at least the most basic topics and types of tasks.

    [Sports programming] is still mathematics, and rarely a problem can be solved by a method that is fundamentally different from what the author intended. Although this also happens, and to see it, again, you need to have experience in solving various problems

    - Pavel Krotkov

    Pair programming

    One more advice from Pavel is to practice pair programming. This approach allows you to save team time and achieve a synergistic effect (team members do not solve the problem individually, but together):

    It is clear that in such a situation the number of “brains” working on a solution doubles, and the solution should appear faster / better

    - Pavel Krotkov

    Tactical decisions during the Olympics

    Maxim Buzdalov gives advice that is quite applicable for the work of the team of "industrial" programmers in hard deadline conditions (for example, when you need to solve several well-known but not trivial tasks at once in a very short time):

    Suppose there is a five-hour team competition. In this case, all team members must read all outstanding tasks by the end of the first hour. Exactly. Thus, you 1) find all the simple tasks, and 2) you can discuss complex problems on equal terms.

    An extension of this technique is a piece of paper marked out in the form of a plate on which tasks are displayed as lines and participants as columns. In the cells, the participant notes that he has read the condition of the task, and also makes short comments (for example, “the task of dynamic programming by subsets”). The solved problem is crossed out. Thus, the current state of the team becomes visible to the team itself

    - Maxim Buzdalov

    The study of related areas

    Another tip from Maxim concerns the development of creative thinking: in addition to constant practice (which lays down certain "patterns" for solving problems), it is sometimes useful to force yourself to think outside the box. The best way to achieve this goal is to "study" related disciplines - from obvious to relatively exotic.

    There is such a "semi-olympiad" discipline, called the "theory of solving inventive problems." I can’t say that I am a professional in it - rather, I work in this field intuitively - but it offers some high-level ideas that can help in optimizing and de-standardizing the thinking process.

    At one time, the Olympiads in mathematics helped me a lot. In them, firstly, a wide variety of ways to think about a task, and secondly, they teach to think not in one way from the list, but rather in a “convex combination” of these methods. Thus, each new idea, invented or seen somewhere, increases your ability to solve problems not by one idea, but by countless ideas arising from the hybridization of new knowledge and what you already know.

    Read a lot, and not only in your chosen subject area (suppose computer science), but also in various other areas (for example, biology). This knowledge will help you find solutions to problems in some areas, using ideas and knowledge from other areas - and thereby shock the world with radical new views

    - Maxim Buzdalov


    Robert Gourley / Flickr / CC

    How do the winners of the olympiads rest


    Daily practice, problem solving, studying related fields of knowledge, studying at a university - it seems that such requirements completely exclude any rest from the life of the participants in the olympiads. Maxim, Pavel and Daria dispelled our doubts - although it turned out that during the rest of the programming champions he was tempted to code:

    If you try to highlight something in common, I would say that board games are very popular. But by and large, everyone rests in their own way

    - Pavel Krotkov

    Children like to play board games in which they need to come up with interesting strategies, tactics in order to win. Also, programmers [olympiadniki] love outdoor activities: football, volleyball, frisbee. There are guys who like to dance hustle. The participants are very versatile personalities, and everyone has their own interests

    - Daria Yakovleva

    Participants in the Olympiads are ordinary people, so hobbies and hobbies can be the same as other people. True, programming is now so large as an area of ​​activity, and allows so much freedom that a programmer can have as a hobby ... programming, just different from what is his job.

    So, when I participated in the olympiads, from programming hobbies I had genetic algorithms (which later grew into the mainstream of my scientific activity) and sound processing. And my “usual” hobby for more than ten years is playing the guitar, composing music and free improvisation

    - Maxim Buzdalov

    Not only Olympiads: who else (except future champions) will benefit from this course


    The authors of the course note: not all of the enrolled are going to participate in programming championships in the near future. Many of those who took the course simply wanted to learn something new in a familiar field or even develop professional skills and make their portfolio more attractive.

    Yes, the course is useful for IT professionals. He talks about what programming competitions are, how to participate in them, how to solve olympiad problems, what methods to use and how to further develop problem solving skills. And all these ideas can be applied and implemented in the IT sphere

    - Daria Yakovleva


    Communication on the forum with some participants of the course showed that some IT specialists with the help of our course regained the belief that programming can be interesting.

    As experience with various programs and sites shows, it would be nice for many IT professionals to take at least a basic course in computational complexity in order to somehow understand at what scale the data sizes of their programs will start to slow down, and what to do about it. This course (despite the name, of course) may well play such a role

    - Maxim Buzdalov

    Pavel Krotkov (who works in parallel with teaching the course on Facebook) explains why IT giants are interested in Olympic programmers:

    On the one hand, such [olympiad] tasks, of course, have little in common with the daily work of the “industrial” programmer. On the other hand, leading IT companies (Google, Facebook - from the world), Yandex - from Russian, just like to hire people with background olympiads. Moreover, even interviews in these companies have much in common with competitions.

    I would say that passing such an interview (experience of successful participation in competitions) makes it possible to understand that the candidate knows how to “think” in conditions of stress and limited time.

    In general, the course itself will not help in everyday work, but it may help those who have spaces in the field of algorithms / mathematics to become better oriented. And participation in competitions, in general, can help “not rust” the brain if the work sometimes becomes somewhat boring

    - Pavel Krotkov

    We add that the second stream of the course “How to Win in Programming Competitions: Secrets of Champions” starts on March 6, 2017, but you can sign up for it now. Classes will last 5 weeks: for training you will need knowledge of English and one of the most popular programming languages ​​(C ++, Java or Python). You can take training for free (a certificate of training - if you need it - will cost $ 49). We are waiting for you among the students of the course and future winners of the Olympiads!

    Also popular now: