Sergei Bibikov, Associate Professor at the Department of Computer System Design and Security speaks about training for competitions in computer science, computer security, mathematics and cryptography.
When is the best time to start training, and how long can it take?
You have to start training for competitions in the more practical fields like computer science, computer security, mathematics and cryptography no less than a year before the start of the qualification round of the chosen competition. Actually, it’s better to start even earlier. National competitions and many of the competitions conducted at ITMO are conducted for students of 8-9 and 10-11 grades, so you can enter them twice or even thrice, especially since the difficulty level of tasks in computer security competitions is almost identical for all age groups. In order to make it to the next round, you have to train no less than two times a week, for at least three-four hours every time.
Is it possible to show good results during your first attempt?
Why not? It all depends on your level of knowledge and skills, and wits. Also, you need training in solving specific competition tasks.
What does one start their training with? Which resources should they make use of, which topics are among the most important?
Naturally, it’s better to start training for a competition by learning participation requirements and the benefits it gives when entering a university. In case of ITMO, we have a list of competitions that also contains information about which results give students an advantage when entering ITMO on a particular program.
There are also different online preparatory schools. The problem with those is that the training they offer is organized much like how similar services train for the Unified State Examination: it focuses on studying and solving tasks from previous years. I believe that most internet resources can only be seen as supplementary means for training. For instance, this site gives information about the previous years’ tasks and different organizational information on several national competitions, including those on computer science and computer security, as well as mathematics and cryptography.
What are the most important skills that a school student has to possess in order to be successful at such competitions?
Some forty years ago, I was runner-up of several regional competitions in physics, chemistry and mathematics for school students, and once even a prize winner of a national competition in physics. Per my experience, the most important aspect of training for a competition is learning to think originally. This may seem hard, but it’s possible. Since the times that I participated in competitions, their nature didn’t change. Most of them imply using standard methods and approaches used at universities, or an original approach that is based on school-level knowledge.
In order to solve such tasks, it’s most important to know the corresponding parts of the school program in computer science and mathematics. Actually, it’s not that much. At schools, they stop giving students the theoretical aspects of computer science in the 9th grade already. So, you just need to review the textbooks for 7-9th grade. As for mathematics, you need to brush up particular sections: probability theory, combinatorics, divisibility criteria, and elementary mathematical logic.
The harder part has to do with skills in the basics of algorithmization and programming. Still, that’s not that much of a problem, either. All you have to do to train them is take a textbook on advanced computer science and solve the tasks from the corresponding sections by yourself. Another way of getting the necessary training is to get an online course in the basics of programming, most preferably in C. Basically, in order to learn programming you just have to write programs and study how they work.
Another important thing: certain tasks imply knowing the basics of computer security, mostly its terminology. Almost everyone knows what computer viruses are. There are also several other terms that every person who’s decided to focus on this particular field of knowledge should learn. In order to do that, all they have to do is read any popular science book.
You have to understand that knowledge and skills are only instruments. What’s most important is to understand where and how do you apply them. There’s a common approach to solving any task from any competition. It implies a particular sequence of actions that is often iterative, which is explained in detail in TRIZ (also known as TIPS, the theory of inventive problem solving).
I would also like to note that starting with March 2018, ITMO’s Faculty of Information Security and Computer Technologies launched a program for training school students of 9-11 grades for the national competition in computer science and computer security. There, we give our students the basic skills and approaches for solving any nonstandard tasks.
How are tasks of such competitions different from those of competitions in other subjects?
Tasks in competitions that have to do with application fields (computer security or cryptography) are different from those on other subjects mostly in their application focus. And that’s not something to be scared of. A good idea is to read the task’s statement several times over and paraphrase it, eliminating extra, useless information that can lead you away from understanding the task’s essence. Usually, it’s the first thing to do when getting such a task.
Roman Polozkov, Head of the Department of Physics, on training for engineering competitions:
When does one have to start training for an engineering competition? How long can it take? And is it possible to show good results during your first attempt?
To my mind, it is the competitions in regular subjects like physics, mathematics or computer science that you have to train for. Those imply having advanced knowledge in particular fields. As for interdisciplinary competitions, you rely on imagination, or creativity, as they call it now. How do you train imagination? Well, you either have it or not. So, if a school student is bored with regular tasks, but has good imagination and a keen understanding of maths, physics, chemistry and programming, they should definitely try participating in an engineering competition. Also, though winning a regular competition on one’s first attempt can be very hard, winning an interdisciplinary one is quite possible.
How does one start training for them? Can you give any advice on the resources to use and skills to train?
As I see it, competitions in engineering have their specifics that make them different from regular ones like those in maths, programming or physics. You see, in order to solve a task in engineering, you might need to use knowledge from all these fields plus a few similar ones. This is why having broad-based knowledge and the ability to come up with original solutions plays a key role. As for training, I would’ve started with reading popular science books by Yakov Perelman. Their names speak for themselves: "Lively Mathematics", " Physics Everywhere", “Tricks and Amusements”.
How can a potential participant compare their knowledge with that of others?
You might try solving tasks from the previous years, which you can always find on competitions’ websites. If you can tackle those, then your level is appropriate and it’s worth applying.
How are competitions in nanotechnology different from those in other fields of physics?
Nanotechnology has long become a field of knowledge that is no longer about “pure” science only; it’s not without reason that its very name includes the word “technology”. So, it is more about engineering that implies advanced knowledge in quantum physics and chemistry. Therefore, in order to be successful in nanotechnology competitions, you have to also possess a keen eye for engineering solutions that allows one to solve interdisciplinary tasks.