You enrolled at ITMO in 1998 after earning a first-class diploma at the national school students’ competition in computer science. But how did you first become interested in the subject?

My school years coincided with the 90s, when everything technology-related was difficult to get hold of. I only got my first computer in 1996, when I was in ninth grade. But I’ve always been very much interested in programming, so I read books and took extra classes on the subject despite not having a PC of my own. When I was finally able to afford the hardware, I started learning at home.

A key moment in my life was when I found out about the Department of Computer Technologies (now the Information Technologies and Programming Faculty – Ed.) at ITMO. I felt that this was where I was supposed to be. I started taking preparatory classes – my first teacher was Sergey Stolyar, who taught at the department. Thanks to these classes, my aptitude in computer science, programming, and competition-related skills grew greatly. I performed well in the national school students’ competition in computer science. I also went to training meetups where I learned from Mark Sandler, who coached teams that took part in the world championship. So I got to learn all about ITMO before I even applied – and I was sure that this was the place for me.

Andrey Stankevich. Photo by ITMO.NEWS

Andrey Stankevich. Photo by ITMO.NEWS

After graduating, you became a staff member at the department and started coaching students yourself. How did you decide to dedicate your life to teaching?

When we were accepted to university, they started to involve us in working with school students. This is a practice that still remains today. Mark Sandler invited me and a few of my peers to help organize contests for kids. And, hearing of my successes, my school computer science teacher invited me to run an extracurricular class. Then, I started working with school students at ITMO and realized that I really do enjoy teaching.

After taking part in ICPC in 2001 for the last time, I became the university team’s coach and continued to do that up till 2019, when this position went to Gennady Korotkevich.

Teaching is, in a sense, even more interesting than programming. It gives me the feeling for which I’ve worked for over 20 years: the feeling of having taught something I know to someone else. At the very start of my career, I grew interested in teaching not only computers, but people to do things; explaining to them how to solve a task or write a program. I felt it in my first years of studying, and became fully convinced when I started teaching to school and university students.

But there are two men who have played a very important role in my career. One of them is Vladimir Parfenov, the dean of Information Technologies and Programming Faculty. In the early 2000s, he worked to create an atmosphere in which the lecturers could do their jobs – including by looking for partner companies that would help cover the staff’s salaries. Nowadays our collaborations with companies have a different focus, but back then the financial issue was particularly important.

The second person is Anatoly Shalyto, a professor at the same faculty, who launched an initiative called Save the Best for the Universities! His aim was to convince successful graduates to remain as permanent university staff. The idea was that IT companies would help by offering additional financing opportunities and thus supporting the work of academic staff. This way, lecturers didn’t need to think about finding side jobs and could instead dedicate themselves to their jobs.

Students and staff of the Department of Computer Technologies in 2016. Left to right: Artem Vasilyev, Niyaz Nigmatullin, Anatoly Shalyto, Maxim Buzdalov, Evgeny Kapun, Vladimir Parfenov, Gennady Korotkevich, Boris Minaev, Pavel Mavrin, and Andrey Stankevich. Photo by Valentin Blokh / sobaka.ru

Students and staff of the Department of Computer Technologies in 2016. Left to right: Artem Vasilyev, Niyaz Nigmatullin, Anatoly Shalyto, Maxim Buzdalov, Evgeny Kapun, Vladimir Parfenov, Gennady Korotkevich, Boris Minaev, Pavel Mavrin, and Andrey Stankevich. Photo by Valentin Blokh / sobaka.ru

Your classes cover discrete mathematics, game theory, and computational complexity. How do you explain complex ideas to students and keep their interest?

Naturally, complex topics, especially in mathematics and computer theory, often make students ask: why study this and how will it come in handy? It’s important for a lecturer to know the answer and relay it to the students. When I teach about complexity, I use the following example: why should you be capable of understanding whether a task is too complex to be solved? Well, if someday you come across such a task in your work, you’ll know that it’s not you who’s too unintelligent to solve it, but that no one in the world could solve it. If you know the main principles and examples of complex tasks and their common traits, you can understand which class your particular task falls into and apply the right algorithms to it. So it’s important to show students why this or that bit of knowledge is important.

What teaching principles have you adopted over the years?

We – me and the lecturers who work in the same educational program as I – have a very simple principle. It’s important for us to see students work in class. Our home assignments don’t just require them to bring a solution. First, a student shares which tasks they were able to solve, and then they explain their solutions to other students. This way, they also get to hone their soft skills. Others can ask questions and sort through different challenges together. This is good for everyone, since the topics we cover during practice will later pop up during tests and exams.

You help school and university students prepare for programming contests. What is the difference between regular teaching and coaching?

Competitive programming exists in a pyramid-like structure: the wider the scope, the more systematically you should cover all methods and how they can be scaled. For instance, if you’re teaching 200 students, you should have a lot of material and a support team. If you’re working with a top team for the world championship, or training the national team, you need to adopt an individual approach to everyone, and that’s interesting, too. I’ve spent many years doing that back in the day.

Teaching at university, especially when it comes to fundamental disciplines and large audiences, is all about systemic work rather than individual approaches. When ITMO students first won the world champion’s title in 2004, or when 2008’s winning team contained not a single winner of the national computer science competition – those were very memorable achievements. But results of teaching work are evident not in specific cases, but in the creation of a system in which you can’t complete a course without learning something. Of course, it’s always nice to hear a graduate recall a time at work when they faced a challenge we covered in class, but these episodes aren’t the most important thing. The most important thing is to put together a strong, modern program and substantiate it with materials; in terms of methodology, success isn’t about any single case, but making a system where everyone can do well.

In addition to teaching, what else do you do?

I have two main responsibilities. The first is as the head of the Computer Science and Programming program. It has always been one of Russia’s best computer science programs, but lately the competition has grown fiercer and it’s become clear that some courses needed to be enhanced or rehauled, with more room made for individualization. This is what I’ve been working on in recent years. I also work with the Research Center “Strong AI in Industry”; starting with the new academic year, our program will function as a part of the federal project Artificial Intelligence. It’s important for us to be aware of what our colleagues in the research world are working on, what they can do for us, and what we should teach our students.

My second responsibility is as the head of the project Competition Center. Talent Guidance, in which we work with prospective students: we organize competitions and contribute to the university’s image as a competency center in competitive programming. Our university holds a student competition for participants from northern Eurasia. We also host all the major national competitions for school students, which provide winners with enrollment bonuses. Within this project, Mikhail Mirzayanov also develops Codeforces, a platform for programming competitions and discussions.

Andrey Stankevich and Mikhail Mirzayanov. Credit: codeforces.com

Andrey Stankevich and Mikhail Mirzayanov. Credit: codeforces.com

On numerous occasions, you were a recipient of various awards, such as the Presidential Award in Education or the ACM-ICPC Founders Award; last year, you were a winner of the ITMO.EduStars competition. How do you feel about such honors?

I feel that such competitions are more important and relevant for younger lecturers because they support those who have just begun their university career. I’m very happy to know that we have the ITMO.Mentors program, which allows older students to assist lecturers and forms the future staff pool. This is very important, especially with the growing number of students.

Andrey Stankevich at ACM ICPC 2016 in Thailand. Photo courtesy of the subject

Andrey Stankevich at ACM ICPC 2016 in Thailand. Photo courtesy of the subject

What do you like to do in your spare time?

Before the pandemic, I enjoyed traveling, especially when I got to combine business with pleasure during trips to various competitions. I also took an active part in urban orienteering games The Running City, and was fond of What? Where? When? (a popular Russian game show and pub quiz format – Ed.). The latter is more difficult to be successful at because you need a lot of knowledge in the humanities; it’s easier with The Running City. There, you only need some general savvy and knowledge of the city to do well. In any competition, I care most about the opportunity to compete with others, compare our results, and show my best.