A curated list of resources. Great if you want to learn something new!
- Scala - Statically typed object-oriented/functional/pragmatic language that runs on the JVM
- Python - Popular dynamically typed language. Used at: Google, Dropbox, Reddit et. al.
- Clojure - Modern Lisp dialect that runs on the JVM
- Go - Compiled and statically type language by Google
- Haskell - A purely functional language
- Ruby - Of Ruby on Rails fame and much more
- C++ - Long ago simply named "C with Classes", now it's far more
- Java - Statically typed language which gave rise to the JVM
- Facebook Hacker Cup - Facebook's individual competition. The first qualifier usually take place in January. Similar to Google Code Jam.
- 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 been NP-complete, with very large instances, so there are 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.
- 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 is in March and only 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 April and May.
- 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 in May, organized by the russian search company Yandex.
- 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.
Editors and IDEs
Note that the course materials are free via the "Access course materials" button.