featured for The Incomplete History of E-Olymp

The Incomplete History of E-Olymp

Oct 12, 2020

Hello everybody! My name is Sergey Kolodyazhnyy and I am one of the co-founders of the E-Olymp. Today I would like to share with you the story of how my computer science teacher Zhukovsky Serhiy (zss) and I created one of the largest Ukrainian sites for studying computer science. Of course, over the years, many caring people have helped the site. This post mentions only a few of them, but I am very grateful to everyone who contributed.


At school, I always liked the exact sciences and I always enjoyed going to math and physics classes. In 2004, I entered the Zhytomyr City Lyceum #1 and discovered a new subject — computer science. I immediately fell in love with the new subject and began to stay late at the computer science class after school. I still remember the blue QBasic screen and my first own program that drew an interface similar to a hard drive formatting screen. I don’t know if I managed to scare my teacher Serhiy with this, but he definitely noticed my skill in the subject and invited me to join the team to prepare for the computer science competitions. Thus began my acquaintance with algorithms and sport programming.

For the next few years, I diligently studied algorithms, solved computer science problems, participated in competitions, and was learning new programming languages and technologies. In the process, I created games and programs for everything I could think of. I even created a program to learn irregular verbs in English. I had some difficulties with English and my teacher said that I wouldn’t pass English, if I don’t learn the irregular verbs. Thanks to my simple program, I’ve managed to learn the irregular verbs and passed the exam.

At that time, there was no HackerRank or Codechef. We were solving the problems during after school computer science lessons, and at the end of the lesson we received a floppy disk with tests and answers to check whether the solutions were correct. So one by one we copied the tests to the computer, then ran each and compared the answers.

Also there was the Zhytomyr Internet Olympiad, which was conducted by Volodymyr Didkovsky from Novohrad-Volynskyi. Participants sent their solutions by email, and the organizers checked them manually. There was also the Vinnytsia All-Ukrainian Internet Olympiad NetOI, they would publish problems once a year and let you submit solutions using a simple form on their website. The results were available in the end of each round.

2007

In the summer of 2007, I started working on a website that would improve the process of checking solutions in computer science lessons. It all started with a simple form through which the user could upload a solution. When the server received the request, it would immediately compile it and perform testing. Of course, this process took some time, and the user had to wait until the page loads. It took time to figure out all details and set up the testing process, but by the end of the summer I had a working system.

In the fall of 2007, we began to actively use the system during lessons and it was named E-Olimp. Olimp, because we used the system to prepare for the computer science competitions (in ukraine called school olympiads in informatics), and E by analogy with E-Mail, because now testing was done online.

A little later, we created a website, and placed the testing system on one of the computers in the computer science class. The site aroused the interest of teachers from other schools and little by little new users began to join us.

One of them was Prysiazhniuk Anatolii (awpris), a computer science teacher from Berdychiv Secondary School #17. Anatoliy loved the ideas of the site, he created dozens or even hundreds of problems, actively answered users' questions, helped solve problems, wrote articles and organized competitions. It is impossible to overstate the contribution that Anatoly made to the development of the site. Unfortunately, he is no longer with us.

2009

In 2009, the site has already registered more than 1,600 users from various schools and cities. The small site has grown into a complex system that can no longer withstand the load. Therefore, the site was completely redesigned from scratch. New design, new features and a new testing system.

The site continued to exist and gain popularity in Ukraine. There were more and more problems, competitions and users. The Department of Applied Mathematics and Informatics of Ivan Franko Zhytomyr State University became interested in us and started to promote the development of the site in every possible way.

Later, our team was joined by a lecturer from Kyiv National University, Medvedev Mikhail (medv), now a professor at the ADA University in Baku. Mikhail began to actively support the site, publish problems and organize competitions. Thanks to him, people learned about the Ukrainian site in Turkey and Azerbaijan. We added the Azerbaijani language to the interface of the site, and thanks to the efforts of teachers from Azerbaijan we were able to translate many problems. Today Azerbaijan is the third largest country on the site.

2014

In 2014, the site underwent another update, the system was rewritten from scratch using a modern, at the time, Symfony 2 framework. The testing system was significantly updated and began to use Docker containerization technology. Web servers and testing system were moved to cloud hosting, that is, instead of physical servers, we began to use virtual. And the testing system finally got a server in the data center, instead of a small personal computer in the corner of the Department of Informatics.

The site was renamed to E-Olymp and was moved to a new address www.e-olymp.com, because, I finally got better with English and learned that the correct spelling is Olympic, not Olimpic. Although the old address www.e-olimp.com is still available.

We have started to use the new system to hold city, district and regional competitions in computer science in some districts and regions of Ukraine. In order to make the competitions to go as smooth as possible, we have started to create separate, empty and completely isolated copies of E-Olymp, available only to competition participants.

2020

Earlier this year, I completely upgraded the testing system again and rewrote its core in Go, a new, modern and powerful programming language. I also started using Linux containers to run solutions in different environments. It’s a special method of isolating processes in the operating system. This has helped to add new programming languages, improved the effort required to maintain and update the system, and significantly reduced server maintenance costs.

The site has also undergone significant, although, maybe not very noticeable changes. I’ve updated the version of PHP and Symfony, I rewrote and optimized many internal processes, such as rating, problem indexing, etc. I also get to implement few new features, such as the ability to view the code by teachers.

We also moved the site and testing systems to AWS. It is one of the largest and most powerful hosting providers in the world. Thanks to AWS, we were able to significantly improve the security of the site and the data of our users and move to a fundamentally new level of network security.

And this month, we started actively using automatic scaling technology in AWS. Now when the number of users increases, we automatically add new servers to the system, and when it decreases, these servers are removed. This way, our infrastructure automatically adapts to the load, increasing the reliability of the site during peak hours and minimizing costs at other times.

But in addition to technical updates, this year we have finally become an official organization registered in Ukraine. We finally got the status that we had de-facto all these years - a non-profit organization. From the very beginning, the site was free and was supported by people who cared and wanted to contribute to the development of science in Ukraine. That’s why Serhiy and I created a non-profit organization “EOLYMP Charitable Fund”, the purpose of which is to support the site and the development of science in Ukraine. You can learn more about the goals and objectives of the organization on the fund’s website.

Maintaining a site as large as E-Olymp is a complex task, as it takes on a variety of responsibilities, from developing new features and installing updates on servers to providing support and assistance to users, all in spear time.

Of course, in addition to effort and time, the site also requires financial support, because hosting the site and supporting its operation requires money. For the last 13 years, Mykhailo, Serhiy and I have personally paid all the bills related to the work of the site.

That is why your help matters so much now. The easiest way to help is to make a monthly payment to the fund. It is not necessary to make a large contribution, it is better to make a small but monthly contribution. In this way we will get a constant source of income to the fund.

But if you can not contribute, for whatever reason, you can still help the site. There are many ways, for example, you can create and publish an interesting problem, help to translate an existing problem or you can publish an interesting post in our blog. These are just a few examples, in fact you can come up with your own way to help. Just contact us via the feedback form on the site and share your ideas and suggestions.

You can also take part in the development of the site, for this you will need knowledge in following technologies: JavaScript, React, PHP (Symfony 4+), Go, AWS, Kubernetes and Docker. If you have experience with at least some of these technologies and want to participate in the development of the site in your spare time - let me know.

We are very grateful to everyone who has already contributed to our fund. For us, this is not just a way to pay bills, but also an indication that our work is needed. This inspires and motivates to continue working and improving the site.

We have a lot of ideas for the future, we really want to help teachers and their students in learning, create tools to help to study computer science. So if you have ideas, please share with us, tell us how you use the site, what you like and what you lack. This feedback is very important to us.


I hope you enjoyed this post and I would love to share more information with you. If you are interested in a topic or have questions about this post, let me know vai feedback form.