📜 ⬆️ ⬇️

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

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

In the second part of our conversation with the authors and instructors of the course - Maxim Buzdalov and Pavel Krotkov, ACM ICPC champions, and Darya Yakovleva, prize winner of Google Code Jam for Women, it will be a question of whether the right mood for the Olympiad winners is important how to develop the search for creative solutions and who will benefit from a course from ITMO University champions.


Michael Pollak / Flickr / CC
')

Spirit vs. experience: what role does psychology play in victory?


Maxim Buzdalov believes that the success of a team (or a participant, if we are talking about a single competition) depends on the training and coherence of the work, which is acquired by long hours of practical training - the more participants train, the less their result depends on the right mood or lack of it.

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 the methods of self-deception work, aimed at increasing self-confidence and “raising the spirit”

- Maxim Buzdalov

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

Of course, the presence of a “fighting spirit” built into the heads can help a lot: for example, our rivals in 2009, the team at Tsinghua University, solved four tasks in the last hour, and they broke into second place, securing a gold medal and title champion of Asia. Good example…

... if it were not for the fact that we took the first place, who, a few minutes after the beginning of the last hour, had 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”, the situation just turned out in such a way that all the previous four hours we had tasks in the writing line, and then they suddenly ended. We wrote a solution to the tenth problem, but we did not have enough time for it.

- Maxim Buzdalov



ITMO-2016 University team at ACM ICPC : Adam Bardashevich, Anton Kovsharov, Andrei Stankevich (coach) and Vladimir Smykalov

Pavel Krotkov clarifies - for the team of professionals, “the charge for victory”, perhaps, fades into the background, but for beginners, the Olympiad participants cannot do without it:

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

- Pavel Krotkov

Daria Yakovleva emphasizes: if the stage of the competition is not immediately set, the participants can really “give up” - but additional training more effectively helps to deal with the problem, rather than any psychological techniques. 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 much interest in the process.

People who do not enjoy solving tasks, of course, will not receive any prizes, simply have no chance

- Maxim Buzdalov

Life hacking and tips


We offered the authors of the course “How to win in programming competitions: secrets of champions” to share tips and tricks that are useful in Olympiad programming - there were several big topics:

Practice

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

- Daria Yakovleva

Maxim Buzdalov and Pavel Krotkov note that regular trainings help not only to achieve success in solving problems, but also provide an opportunity to anticipate the right course of thought. However, one online course for the development of such an ability will be clearly not enough (students will need 4-6 hours per week to complete it) - they will have to solve problems every day (by the way, the authors of the course give advice on how to continue regular trainings on their own).

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

- Maxim Buzdalov

When you have seen a thousand tasks for different algorithms and ideas, it is much easier to understand in which direction to go in search of a solution for the first thousand. In this sense, the course can lay a certain basis 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 radically different from the one planned by the author. Although this also happens, and to see it, again, you need to have experience in solving various problems

- Pavel Krotkov

Pair programming

Another tip from Paul is to practice pair programming. Such an approach allows the team to save time and achieve a synergistic effect (the team mate does 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 Olympiad

Maxim Buzdalov gives advice, which is quite applicable for the work of a team of “industrial” programmers in terms of a tight deadline (for example, when it is necessary to solve several well-known, but not trivial tasks in very short time):

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

An extension of this technique is a piece of paper, marked up in the form of a tablet, on which lines are tasks, and columns are participants. In the cells, the participant notes that he has read the condition of the problem, and also makes brief comments (for example, “a task for dynamic programming on subsets”). The solved problem is deleted. Thus, the current state of the command becomes visible for the command itself.

- Maxim Buzdalov

Exploring related areas

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

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

I was very much helped by the Olympiad in Mathematics. In them, firstly, there is a wide variety of ways to think about a task, and secondly, they teach them to think not in one way from the list, but rather in a “convex combination” of these methods. Thus, each new idea, invented or somewhere seen, increases your ability to solve problems not by one idea, but by the countless ideas that emerge as a result of 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 fields (for example, biology). This knowledge will help you find solutions to problems in some areas, taking advantage of ideas and knowledge from other areas - and thereby shake the world with radical new views.

- Maxim Buzdalov


Robert Gourley / Flickr / CC

How to win the Olympiad winners


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

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

- Pavel Krotkov

Guys love to play board games, in which you need to come up with interesting strategies and tactics in order to win. Also, programmers [-implepiadniki] love outdoor activities: football, volleyball, frisbee. There are guys who love to dance hustle. Participants are very diverse personalities, and each has their own interests.

- Daria Yakovleva

Olympiad participants are ordinary people, so hobbies and hobbies can be the same as other people. True, programming is now as big as a field of activity, and it allows so much freedom that a programmer can have as a hobby ... programming that is just different from that which is his job.

So, when I participated in olympiads, I had genetic algorithms (later developed into the mainstream of my scientific activity) and sound processing from programmers' hobbies. My “usual” hobby for more than ten years has been playing guitar, composing music and free improvisation.

- Maxim Buzdalov

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


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

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

- Daria Yakovleva


Communicating on the forum with some students of the course showed that some IT specialists, using our course, regained their belief that programming might be interesting.

As the experience of communicating with various programs and sites shows, many IT professionals would be nice to take at least a basic course in the area of ​​computational complexity in order to at least understand on what scale their data sizes will 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, in parallel with teaching the course, works on Facebook) explains why IT giants are interested in programmers and olympians:

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

I would say that the passage of such an interview (the experience of successful participation in competitions) makes it possible to understand that the candidate is able to "think" in conditions of stress and limited time.

In general, the course itself will probably not help in everyday work, but it can help those who have gaps in the field of algorithms / mathematics to begin to better navigate in the field of algorithms / mathematics. And the very participation in competitions, in general, can help the brain to “not rust” in case work sometimes becomes somewhat boring

- Pavel Krotkov

We add that the second stream of the course “How to win in programming competitions: the secrets of champions” starts on March 6, 2017, but you can enroll now. Classes will last 5 weeks: for training you will need knowledge of English and one of the popular programming languages ​​(C ++, Java or Python). You can get training for free (certificate of completion 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 Olympiad!

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


All Articles