What are coding competitions, and how to create and participate in one at Neps?

Competitive Programming

This guide will help you with everything you have to know on how to create and participate in coding competitions at Neps Academy.

Additionally, it will also provide links to websites that also host coding competitions regularly, so there will always be a coding competition around the corner for you to have fun.

This guide is divided in:

What are coding competitions?

Coding competitions, also known as programming contests, generally have a set of programming exercises that the contestants have to solve by writing a write computer program. The programs have to be effective (correct) and efficient (fast).

Some competitions are individual as the Google Code Jam or Facebook Hacker Cup while others require participants to compete in a team like the International Collegiate Programming Contest (ICPC).

Since Neps Academy is based in Brazil, we do have a stronger focus on the Brazilian competitions. Most of the top Brazilian students do use our website to find success in such competitions.

Below you find the list of the most important competitions in Brazil and the world for school and university students.

  • Brazilian Olympiad in Informatics (OBI): The OBI is the most important competition for students in elementary and high school in Brazil. Those who do well in this competition open many doors to the best universities in the country and abroad. Some of the students who help us build Neps have succeeded in this competition. Now they study in some of the best universities in the world like MIT and UBC.
  • Selection for IOI: The 10 best Brazilian students compete in a selection process that selects the top 4 representants of Brazil to participate in the IOI, the most important competition in the world for students in school. When we started our project, we were immensely proud when the first student with no programming lessons in his school managed to get one of these spots by studying on Neps. Now, it is almost impossible to qualify for the selective process without studying at Neps.
  • International Olympiad in Informatics (IOI): This is the most important competition in the world for students in school. The contest consists of two days of computer programming/coding and problem-solving. Students at the IOI compete on an individual basis and it is the second-largest Scientific Olympiad (based on the number of participating countries), behind only the Mathematics Olympiad.
  • Brazilian Collegiate Programming Contest: Know as Maratona de Programação in Brazil, it is the first phase in the journey to the International Collegiate Programming Contest (ICPC). Participants in this competition are in the university. The competition is composed of 8 - 15 problems with a duration of 5 hours.
  • Regional South American Contest: It is the second phase in the Brazilian selection to the ICPC. The competition is hosted simultaneously in all countries in Latin America. The top 50 Brazilian teams from the first phase participate in this competition aiming for one of the spots in the world finals.
  • International Collegiate Programming Contest: This is the most important competition for students in the university. The contest participants come from over 2,000 universities that are spread across 80 countries and six continents. Each year it is hosted in a different country.

Each country has its own structure to select the participants for the IOI and ICPC. However, most of the content required in the different regional phases across the globe are the same, since all have the same target in the end: getting into the worlds final. So, even that we do have a focus on the competitions in Brazil, you can train at Neps for your regional competitions without any problem.

Why you should participate in coding competitions?

The main reason to participate in coding competitions is to have fun 😃. You should not participate or force yourself if you don’t like the challenge that comes with it.

You will be solving very challenging computational problems, many times way beyond what your colleagues in the university are dealing with. If you get into it, you will be like an athlete. You will train daily and improve your programming skills a lot.

The main benefit of participating in competitions is that your algorithm skills will be better than most other programmers. That is why many companies are very interested in hiring competitors. The main benefits for these companies are that such programmers can easily pick new technologies and talk and communicate well with the team when solving complex tasks.

However, we must point that not everyone should invest 100% of their effort in getting better in competitions. Like everything in life, it needs to be balanced. As pointed out by Peter Norvig by offering only small algorithmic puzzles with relatively short solutions, programming contests like ICPC and IOI don’t necessarily teach good software engineering skills and practices, as real software projects typically have many thousands of lines of code and are developed by large teams over long periods of time. So, we definitely recommend you to participate in programming competitions but keep your self open to learning other skills needed to perform well in a job.

Coding Competitions at Neps

Here at Neps, we host some programming contests. Last year we started a project called Programming League composed of 4 round spread throughout the year (in Portuguese only). However, this year we plan a different approach.

We are going to offer Replays from previous official competitions like the Brazilian Collegiate Programming Contest (BCPC), the German Collegiate Programming Contests (GCPC) and many others throughout the year. Additionally, we will also have rounds called Neps Programming Contest (NPC), where we will have a team of experienced competitors that will create original programming exercises. More information about NPC will be revealed soon 😉.

In addition to these competitions, you can create and host your own coding competitions at Neps. Anyone can create their own programming exercises in our platform, and with a PRO subscription, it is possible to organize a competition composed of all public exercises available at Neps and the ones created by you.

The competitions you create have a limit of 25 people (this limit can increase later). We do have a limit because such competitions are intended for people to organize training in their own studying groups. If you plan to host an open competition (that everyone can participate in) or need a higher limit, send us an email and describe your case.

How to create a coding competition at Neps?

To create a programming competition, go to the Competitions page and click on New Competition.

Figure 1 : Click on the New Competition

Next, fill in the information about the competition as shown in Figure 2.

Figure 2 : Fill in all information about your competition

Below you find a detailed description of each field.

  • Title: Choose a nice name for your competition;
  • Style: Select the style between:
    • OLYMPIAD where only the last submission counts. All submissions are judged only at the end of the competition and accept partial scores.
    • ICPC follows the standard rules for the ICPC, as shown in the Scoring of a Regional Phase.
    • NEPS follows the ICPC rules but accept partial scores for the submissions.
  • Allowed Participants: Select if Teams are allowed to participate.
  • Password: You will share this password with who you want to invite for your competition. It is not possible to create a competition without a password without our authorization. When competition does not have a password, it is considered open, and anyone can join.
  • Programming Exercises: Select the programming exercises that you want in your competition. It can be any exercises publically available at Neps or any exercise created by one. We recommend putting the visibility of the exercises that you create as PRIVATE if you plan to use them in competitions. After the competition is done, you can change it to PUBLIC.
  • Time and Date: Choose when the competition takes place.
  • Description: Help the participants identify your competition, as well as giving some important information to them. The description support Markdown.

If you not sure which exercise to add and want some suggestions, you can use the option in the sidebar. It will automatically add an exercise to your competition. This option is great when you want to quickly create a competition for training purposes.

Figure 3 :Automatically add an exercise to your competition

After filling in all information, just click in Save. Done! You created your programming competition. Now invite your friends to join your competition.

Go to your competition’s page by clicking in Go to Dashboard as shown in Figure 4.

Figure 4 :Go to competition's dashboard

There you will find the Show Password button that will display your competition ID and password. This is the information you need to share with your friends so they will be able to join your competition.

Figure 5 :ID and password needed to join competition

How to join a contest?

Join a contest is easy. If it is an official competition, you will find it right on the calendar. However, if it is a closed competition, intended to train and have fun only with friends, you will need the ID and password of the competition, provided by its organizer.

In both cases, when on the competitions page, click in Join Competition, then you need to select if you want to participate as an individual or as a Team. After choosing it, click on Join. That is it.

To learn more on how Teams work at Neps, look here.

Figure 6

If you don’t know the competition’s page link, you can enter all the information directly on the Competitions Calendar page.

Figure 7 :Registering in a competition using ID and password

Other sources

Many websites host programming competitions regularly. Below you can find our top suggestions.

There are also two calendars that aggregate data from many websites, unfortunately not from Neps yet. There you can find competitions that are happening or will start soon.

Have fun participating in coding competitions. We wish you the best of luck! 😄