We publish an article by Pavel Dubov, a student of the FIFT MIPT, a teacher of the course
Algorithms. Olympiad programming in 1C: Club of programmers and coach of our olympiad team.

Sooner or later, before any student who plans to enter a decent university for an IT specialty, the question arises: how and for what to prepare? Of course, the most banal answer is to prepare for the exam, bringing self-control to a frenzy of automatism in order to avoid mistakes at crucial moments. But there is another way, which allows not only to give yourself additional chances, but also to acquire the skills necessary to get a job in good companies.
')
This is the way to learn algorithmic programming. In addition to all of the above, it is very exciting and fun.
At the moment there are several levels of Olympiads in Informatics. At the "highest" level is the All-Russian School Olympiad. Getting a diploma at this Olympiad guarantees the participant entry to any university in the relevant profile without exams. Olympiads of other levels, depending on the university can give either admission without exams, or 100 points on the exam in computer science. For such benefits, you need to score the minimum score at the USE itself - usually 65 points, which, in general, subject to obtaining a diploma of work is not. The distribution of competitions by levels is published annually by the Ministry of Education and Science on the Internet. Since there are several Olympiads, you can try success several times and thus simplify your task.
So what do you need to start training?
In the worst case, there is a sea of patience, because many things in such disciplines are passed from word of mouth, and the brave man, who bravely decided to storm the granite fortress alone, runs the risk of stalling in the way of learning. Some techniques, ideas and techniques that reduce the amount of code and potential errors are simply not documented. The order of study is also important: it is much easier to understand, for example, in algorithms for circumventing graphs, understanding what recursion is.
The environment plays no less a role in learning. First, it is more interesting to study among like-minded people; friends can encourage and prompt. Secondly, you can assemble a team and go to team competitions, which do not give privileges, but they are, nevertheless, very funny and useful. As a student, you can already participate in the ACM-ICPC team competitions, the winners of which many well-known companies immediately offer contracts.
For those who want to combine the structured material and a good company, for them there is 1C: Programmers Club (
http://club.1c.ru ): a sequence of courses, among which a person with any level of knowledge can find himself suitable. In addition to algorithmic courses in Java, there are also courses on "industrial" Java, system administration and project development management.
The study of algorithms begins with the Algorithms Startup Module (each module lasts six months, classes once a week for two hours with a break), which is designed for those who have not dealt with programming at all. It studies the basics in detail: arithmetic operations, conditional operators, cycle operators, and functions, how to pass problem solving to a testing system.
Then follow the First and Second modules, in which the acquired skills are consolidated, simple data structures and algorithms are sorted out: GCD / LCM, arrays and sorts, strings, stack and queue, graphs and detours, dynamic programming method.
3-4 modules are focused on the preparation of tools that are often used in serious olympiads: combinatorial generation, the largest increasing / general subsequence, algorithms on graphs, sums of games, binary search, computational geometry, convex hull, binary heap, segment trees, hashing.
Of course, it is not necessary to come exactly to the Starting Module: if you own the basic structures of the language, you can start right away with the First. If the first or second seem dull and understandable - you can skip them.
For those who have few basic occupations, there are special fees of 4 hours: they are preparing for specific competitions, honing techniques and the ability to recognize problem-solving methods, non-standard application of ideas and algorithms.
I work with groups of 3-4 modules and charge fees.
Usually, classes 3-4 modules are as follows: first we disassemble the necessary theory, and then the guys solve problems and pass them into the testing system. Most often there are about 10 tasks from the simplest (for the development of the necessary skill) to the level of olympiads. At the same time, I look at the code both at the time of writing, to make sure that the process is going in the right direction, and after putting it in order to give advice that accelerates or simplifies the development of solutions in the future.

At the training camp, we simulate the situation at real Olympiads: given the time during which you need to almost continuously solve problems. Naturally, I give some hints along the way, but they mostly have an ideological character, or help to behave more correctly on the tour. At the end of time, we sum up, and each of the tasks is solved by one of those who have solved it, and then I tell the unsolved ones. Sometimes we dedicate classes to important, but not covered in the modules topics, for example, stress testing or the use of standard libraries.
The guys at the training camps do not have a single task: for example, this year two people were preparing for the final stage of the All-Russian Olympiad, while the bulk of them were preparing for the Moscow Olympiad, which is held in versions for grades 7-9 and 10-11. As a result, at each competition we managed to win prizes.
During extracurricular activities, the Club also lives its own life: they organize trips to the cinema and on excursions. And I usually go for a walk with the guys from my last group on this day.
It happens that they teach me something: for example, how to get rid of ± 1 when writing a tree of segments where hot dogs are most delicious or in what year Marie-Antoinette was born. So it’s never boring.
I don’t know what the secret is, but the Club is very homely. You can find friends, a Counter-Strike team, a company for board games, or arrange a couple of hackathons and make your own Mario with your group mates.
Yes, and no one remains hungry. Perhaps this is one of the reasons for such an atmosphere: one thing is to pass the time, flipping through the social network tape, and the other is putting the smartphone aside, eat a sandwich and drink tea with cookies. This is sure to meet someone!