Contents:

  1. Reasons to take part in contests
  2. Types of computer science contests
  3. When to start training
  4. The skills you will need
  5. Useful resources
  6. A contest for those who are not pros at programming

Reasons to take part in contests

Improve your chances of getting into the program of your dreams. Each contest or competition might get you bonus points, boost your CV, or even help you get into a university without exams. 

Level up your knowledge. According to Alexander Mayatin, the deputy dean of the Information Technologies and Programming Faculty and a participant of the project Competition Center. Talent Guidance, says that as you are preparing for a contest, you become more diligent, independent, and ready to work with complicated topics. Moreover, this is how you can learn to solve harder problems. 

“If you want to get into one of the top fields, you will also have to study hard once you are at university. You will need to be focused, to think on your own, and manage your time well. Importantly, you will need to get into the habit of deeply understanding a subject instead of simply solving problems by following a template or example. All of these skills are not to be learned from textbooks,” says Alexander Mayatin.

Boost your soft skills. Participating in contests means that you need to think creatively and meet tight deadlines, as well as work in a team and cooperate with its members. All of these skills are valued at IT companies even more than programming talents.

Types of computer science contests

On the whole, there are three types of contests: those on general computer science, on competitive programming, and the ones with a focus on a narrow specialization. 

General computer science. Such contests generally follow the topics covered by the school curriculum, but the problems you need to solve are much harder than the ones usually found in textbooks. Nevertheless, these are the ones you can train for with your school teacher. An example here is ITMO’s Open Competition in Computer Science.

Competitive programming. This is its own separate field and not every teacher will be able to help you with it. You can train on your own or at special clubs – in any case, you will need to work hard and prepare to participate in many contests without losing hope even if you don’t see immediate results. One such contest is the National Competition in Computer Science (held in Russian).

Contests in specific fields. Such contests are for those students who have already chosen a particular field of interest, such as robotics, information security, machine learning, or game development. For example, the National Technological Contest.

There are also different contests for younger students where they can develop their programming skills, as well as logical and creative thinking (for instance, the National Technological Contest Junior).

National Technological Contest In big data and machine learning. Photo by Amina Aleeva / ITMO’s Media Portal

National Technological Contest In big data and machine learning. Photo by Amina Aleeva / ITMO’s Media Portal

When to start training

Alexander Mayatin believes you shouldn’t start earlier than at around 12 years old. Younger children may have a harder time working with abstract thinking and even though they can write programs in Python, they might not get the concept behind programming right. Moreover, it’s a complex subject and failures at competitions may turn out very discouraging for the child.

Grades 7 to 8 are the best time to start dipping your toes into different IT fields – not only programming, but also robotics, 3D modelling, prototyping, game design, web development, and others. 

Grade 9 is a good time to try your hand at contests and competitions, the more, the better. You will still have enough time to train for top-level events.

Grade 10 might be too late to start, according to experts, but there is still time. The strategy here is to learn one programming language and study data structures and algorithms on your own. Then, once again, you will need to take part in as many contests as possible – and in a year you might produce significant results.

Grade 11 – that’s a tough time to start competing, because you will be pressed for time. First of all, you need to evaluate your level of training and choose your contests wisely. For instance, while you won’t be able to prepare for a competitive programming contest, you will still have great chances with general computer science ones.

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

The skills you will need

Theoretical:

  • Numerical systems
  • Information encoding and measurement
  • Boolean algebra
  • Basics of data structures and algorithms

Practical:

  • Two programming languages: a compiled one and an interpreted one (e.g., C++ and Python). Experts recommend you start with C++ to understand the basics of computational processes and their connection to the programming language. Python, on the other hand, is better suited for quick solutions of applied tasks;
  • Learn to make your algorithm using different language structures instead of memorizing typical usage examples;
  • Know how to debug your code;
  • Know how to come up with several solutions to any problem.

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

Useful resources

ec.itmo.ru 

This is the official platform of ITMO’s Open Competitions for school students. Here, you will find an archive of problems from previous years with detailed solutions. Moreover, you can take part in the training sessions held before the start of the competition each year. This is a great opportunity to test your skills and check out suggested solutions to problems. Any points you get in the training session won’t have any effect on your final score.

codeforces.com

A major competitive programming platform, it was founded by Mikhail Mirzayanov, now an employee at ITMO’s Information Technologies and Programming Faculty. The contests on the platform are run within four divisions, the fourth being the recommended one for budding programmers. The more contests you take part in, the higher your chances at performing well at bigger competitions. 

On the EDU tab, you can also access a pilot competitive programming course, as well as classes by community members.

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

ITMO's Computer Science and Programming Academy (link in Russian)

The Academy offers courses in C++, Python, theoretical computer science, and competitive programming, as well as training for the Russian Unified State Exam in Computer Science.

ITMO's Competitive Programming Club (link in Russian)

As the name suggests, this club prepares students for programming competitions. One of the head coaches is Andrey Stankevich, who trained several generations of world programming champions.

Read also:

ITMO.EduStars Winner and ICPC Star Coach Andrey Stankevich on Finding His Calling

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

National Programming Competition for Teams 2022. Credit: NERCNews / NERCNews

A contest for those who are not pros at programming

Yandex has recently offered a different programming contest for school students in grades 6-11, regardless of their level of training. The contest (in Russian) offers an introduction into the world of programming competitions.

“We have worded the tasks in a way to allow any participant to solve at least one task. This first success will serve as encouragement and self-esteem boost for participating kids,” says Pavel Kontsov, the head of a regional branch of Yandex Textbook – the department responsible for the contest.

Left to right: Pavel Kontsov, the head of a regional branch of Yandex Textbook, and Roman Gusarev, a methodology specialist at Yandex Textbook. Photo by Dmitry Grigoryev / ITMO.NEWS

Left to right: Pavel Kontsov, the head of a regional branch of Yandex Textbook, and Roman Gusarev, a methodology specialist at Yandex Textbook. Photo by Dmitry Grigoryev / ITMO.NEWS

There are two rounds in the contest. First comes the personal one with problems in several difficulty levels (for instance, participants can simply demonstrate that they’ve understood the task). The second round is an online hackathon for teams of five who are tasked to develop skills for Alice, Yandex’s voice assistant. Students with zero programming skills can also get into the second round. 

“We designed the contest in a way that allows students with logical thinking but no programming skills to get into the team round. In a team, everyone is assigned a role – and some roles don’t require programming. Instead, such students come up with creative ideas, designs, or UX scenarios,” adds Roman Gusarev, a methodology specialist at Yandex Textbook.

Roman Gusarev. Photo by Dmitry Grigoryev / ITMO.NEWS

Roman Gusarev. Photo by Dmitry Grigoryev / ITMO.NEWS

Winners receive additional points when applying to Bachelor’s programs at Russian universities, including ITMO.

This guide was created based on the talks and discussions held at the ITMO Open Education conference organized by ITMO and Yandex.