JetBrains at the ICPC North America Championship 2020

Posted on by Anna Morozova

The first ICPC North America Championship (ICPC NAC 2020) took place February 19–23, 2020. The top teams from the ICPC North America Regional Contests advanced to the ICPC NAC in Atlanta, Georgia, hosted by the College of Computing at the Georgia Institute of Technology.

JetBrains was proud to be a Gold Sponsor of the event. We were also honored to receive an ICPC North America Outstanding Community Leadership Award for our three-year commitment to their North America Regional Contests, participation in the ICPC World Finals, and service as the official ICPC Global Programming Tools Sponsor. JetBrains was also recognized for our commitment to helping ICPC Global advance the art, science, and sport of programming through trustworthy competitions for universities all over the world for the benefit of society.

JetBrains_award

JetBrains was represented by members of the Educational Products and Kotlin teams, along with Andrey Ivanov, SVP of Investments, Research, and Education. We participated in different activities related to the event, and we also had a booth at the Career Fair, where we had an opportunity to speak with contestants and their coaches about best practices and tools in computer science and to discuss our open internship positions. Sebastian Aigner, JetBrains Developer Advocate in Education, gave a talk for the coaches about our Educational Products and JetBrains Academy, a hands-on platform for learning programming.

Sebastian_Aigner

He provided an overview of the features and capabilities of the platform and described their uses for learning and teaching programming.

One of our central goals at the ICPC North America Championship was to meet teams using Kotlin for competitions so that we could share their experiences and help make Kotlin, already one of the official ICPC languages, more popular for competitive programming.
Some teams, including the NAC winners from MIT, used Kotlin during the practice contest. One of their team members also later became the third-place winner of Kotlin Heroes 3.

The team from the Milwaukee School of Engineering (MSE) used Kotlin for every submission throughout the contests. We had a chat with team member Nick Johnson about the factors that make Kotlin a great choice for competitive programming. Here are some takeaways about why the team from MSE chooses Kotlin for their coding challenges:

  • What parts of Kotlin’s design make it a good contender for competitive programming?

    Kotlin is built to be easy to use and very intuitive. It’s like speaking a sentence out loud and putting it into code. Kotlin is a great functional language, incredibly strong for anything list-based, array-based, or map-based. It’s beneficial for manipulating copious amounts of data.
  • What advice would you give to other competitive programmers making the switch to Kotlin?

    There are a number of tricks in the language you can use to your advantage! For example:

    • Use functions inside function bodies to keep track of states easily.
    • When modifying any sort of data, put a dot after it and look at what IntelliJ suggests for auto-completion. There’s a good chance that it will suggest the change you’re looking for.
    • Sorting is an operation built into lists. You can choose a custom sort button, copy to other lists, or mutate certain parts of the data.
  • Why do you prefer Kotlin over other official ICPC languages?

    Well, it’s not quite that simple – there’s more than one reason:

      • Using Java is like tying chains to your feet for fun because of all its limitations, such as the extra code one needs to type or the extra things one needs to do to map or transform data. A Java solution can easily be 2 times longer than an equivalent Kotlin solution, without any runtime benefits.
      • ICPC is an algorithms contest, and while C++ is fast, functional elements of Kotlin, like operations on lists, make it easier to use for the contest than C++. There’s no need to type out three or four lines of code, as you must do in C++.
      • Looking at things like the standard library, Kotlin offers a lot more than Python, and does a lot of it better. The speed difference can be simply incredible: we’ve had solutions that our teammates wrote in Python and timed out, and with Kotlin we can solve the problem in 0.1 seconds just because that’s the nature of the language.

    I’m excited to see what other people can do once they start to use Kotlin and remove the shackles of whatever language they’re currently using.

  • Thank you for your insights, Nick!

And, of course, we can’t forget to mention the winner of ICPC NAC 2020, the MIT team. Congratulations to the team and its coach, and also to every participant of this great and unique event! We were happy to be there with you!

Awards_ceremony

Your JetBrains team