Code@LTH

A community at LTH dedicated to exchanging knowledge, working on open source software together and having fun.

Competitive Programming

We enjoy organizing and participating in programming competitions! Below we have organized some information about contests.

Calendar

Course

Check out our intro course in competitive programming aimed at students who have at least one or two courses of programming experience. The course covers a lot of different algorithmic topics, common at programming competitions.

Training sites

  • Kattis - A large collection of algorithmic problems. Is used as the judge system for a lot of competitions.
  • Codeforces - A Russian site that organize weekly 2h competitions. Perfect if you wan't to train to solve problems fast!
  • Code Chef - An Indian site that organize a lot of competitions that are open for submissions for weeks!
  • At Coder - A Japanese site that organise similar competitions as Codeforces.
  • Project Euler - A site hosted in memory of the very productive matematician Euler. Features very mathematical problems.
  • Advent of Code - Each December we get an advent calendar of small puzzels. Lots of puzzels are very algorithmic, some expose you to things like MD5 or JSON.

Programming Competitions

  • Facebook Hacker Cup - Facebook's individual competition. The first qualifier usually take place in January. Similar to Google Code Jam. For 2018 Facebook has announced that the hackercup will not take place in the first half of 2018, but hopefully in the fall of 2018.
  • Google Hash Code - A team competition hosted by Google. You can be 4 in a team and your goal is to, for each input instance (all are known), produce an output that scores as much points as possible. There is only one problem, and for the last 3 years it has been NP-complete, with very large instances. This means that there is not enough time to solve the problem optimally. A common strategy to arrive at good outputs is to combine a greedy algorithm with randomization. The online qualifier usually takes place by the end of February. Since 2016 Code@LTH has organized a hub for the online competition. It's a good idea to prepare a lot for this competition. Try using a Hash Code Template and see if that improves your speed of solving an old problem.
  • ProgrammeringsOlympiaden - The Swedish championship in competitive programming for highschool students. The qualifiers take place by the end of the year and the finals in February. Usually some of the competitions are open for everyone to compete in online.
  • Deadline24 - A team competition with a mix of problems that some should be solved optimally and some should be solved as good as possible. The finals take place in Poland and lasts for 24 hours. The qualifier usually take place very early spring and lasts for 5 hours.
  • Russian Code Cup - Individual competition that are similar to Google Code Jam. The rounds are usually only 100 minutes. The qualifications take place in late spring.
  • Google Code Jam - Individual competition hosted by Google. There exists a lot of rounds. The first round (round 0) lasts for more than 24 hours, and you only need to solve about 2 out of 4 problems to advance to round 1. This round usually takes place in the beginning of April. Round 1 consists of 3 competitions where 1000 participants advance in each competition. Round 2 you get a T-shirt if you place top 1000, and advance to round 3 if you you are top 500. To advance to the on site final you need to place around top 30 in round 3. A typical round consists of 3 or 4 problems with (usually) increasing difficulty. It's recommended to take a look at some old problems if you wish to advance to round 2 and beyond.
  • Distributed Google Code Jam - This contest is quite different from the others linked. Here you are given a network of 100-1000 nodes (computers with low performance), which you are to solve 3-4 problems on. Here you want to distribute the computations so the nodes split the computations, since one node don't have enough time to compute everything. Let's say the problem is to sum a very large array of (10^9) integers and you have 1000 nodes. Then each node can be responsible to sum it's share of the array. Each node knows it's ID, so the first node sums from 0 to 10^6, the second from 10^6 to 2*10^6, etc. Then a master node sums the result of each node. However it can be quite a lot trickier to split the input instances for other problems. In 2017 you were able to participate in Distributed Code Jam if you advanced to the regular Code Jam round 2.
  • Yandex Algorithm - Individual competition that takes place during the spring, organized by the russian search company Yandex. 2018 there will be an algorithmic competition, an optimization competition and a machine learning competition.
  • KTH Challenge - A competition organized by the university KTH in Stockholm. This competition usually takes place in June. It is free of charge to participate on site in Stockholm, including nice prices and food. It is also possible to participate online. The contest lasts for 4 hours and is individual.
  • NCPC - The nordic qualifier for ACM's contest ICPC. ICPC is unofficially called the world cup of competitive programming. All university students younger than 24 years old can participate in teams of 3. You have paper, pen and one computer without internet available to solve about 12 tasks during 5 hours. Most Swedish universities host a hub for this competition.
  • NWERC - If your team performs well in NCPC you advance to the on site competition NWERC. Problems and rules are similar to NCPC. There is an online mirror of the competition.
  • Swedish Coding Cup - A series of competitions hosted on universities and companies around Sweden. In 2017/18 the cup consists of 8 competitions. Code@LTH organised LTH Challenge, which was part of the cup, this we plan to continue with!

Copyright © Code@LTH 2015-2020