This page summarises the preparation for ITU students for the Nordic Collegiate Programming Competition (»Danmarksmesterskaberne i Programmering«) for 2019
The Nordic Collegiate Programming Competition (NCPC) is a programming and problem solving event held every year. Teams of 3 programmers try to solve as many problems as they can (from a list of a dozen or so tasks) in five hours. The NCPC is open to all, but in order to compete in the “official” part (placing in the national championship or proceeding to the European or world finals), you need to be a university student, and you need to register in advance and participate on site. That is also the most fun and satisfying experience.
How difficult is this?
This is for you. If you have programming skills corresponding to a single ITU introductory programming course, you should be able to solve 1–2 problems. You should feel very good about that. If you have even taken an introductory algorithms class (or other problem solving class) then maybe 3–4 questions are within reach, which puts you very high on the list. You can look at last years’ standing for all of Denmark; as you can see this event is highly welcoming of newcomers. (Don’t get distracted by the monstrous performances of the top participants; think of it like running the Berlin marathon — you don’t feel bad about being slower than the world record holder in the same race).
The event (»Danmarksmesterskaberne i programmering«)
The Danish events label themselves Danish Championships, and typically take place in Aarhus, Odense, and Copenhagen. ITU Students are encouraged to participate in the Copenhagen event hosted at KU, and supported by NetCompany and JobIndex.
- Event home page for DM i programmering (in Danish) for Saturday 5 October at HCØ. This is also where you will find a link to registration
- Event home page for NCPC 2019 (in English). Includes link to registration. You can either register your own team, or I (Thore) will do it for you – just tell me.
If you want some inspiration, here is a hyggelig film about the 2016 event:
You can also look at the
- web site for NCPC 2018 (last year), where you can see the team names and how well they did (under Final standings), read the problems, and look at the slides explaining their solutions. As you can see, there were 0 ITU teams. We want to change this.
Preparation at ITU
You should totally participate. If you’re on your 2nd year of studies and enjoy programming, problem solving, and collaborating, this is a brilliant, engaging, and intellectually and socially satisfying way to improve your skills – it is also great team building. And boy, does it look good on your cv.
- Create a team. You want to create a team, maximally (and preferably) of 3 people, and find a suitably painful team name. If you don’t yet have a team, we will probably be able to create some during September. If you want to seriously compete, you need to read the rules for participating in the official championships, see the event web site. Or you can be like me and just participate for the fun of it. Align your expectations with your friends.
- Chat channel: https://talk.itu.dk/channel/dmprog-ncpc-2019 : a chat channel at talk.itu.dk for this event. If you’re an ITU student, you already have an account. We’ll use this to communicate about pizza, problems, teams formation, news, etc.
- NCPC Coaching Fridays at ITU at 15: Most Fridays at 15–16, starting 30 August, one of the ITU teachers will be available (room to be announced) for some coaching. Among other things, we’ll go through last year’s NCPC problems, point to other good material, discuss strategy and preparation. See the bottom of this page for an overview.
- Bjarki’s course. Bjarki Ágúst Guðmundsson maintains a very ambitious course about competitive programming at https://algo.is. Includes links to relevant open Kattis exercises. No matter where you are in your skill development, there should be a module or two for you that makes you better.
- Johan’s book. Johan Sannemo, Principles of algorithmic problem solving. Similar to Bjarki’s course, slightly different format and focus.
- Grind. Log on to open.kattis.com. Sort the problems by difficulty and solve them from the top. Or search for NCPC to find old contest problems.
- Teambuild. Do some programming in your team in order to understand your group’s dynamics. (The contest is with a single computer, so only one person at a time is typically typing.) Agree on one or two languages. (Python 2 and Java both are good choices.)
- Select written material. You can bring any written material. So: Learn not to rely on on-line material (you can’t google stackoverflow during the contests) and find out which written you actually need and can navigate (say, a programming language reference, but not all 4 volumes of the Art of Computer Programming). You can even maintain your own evolving document, with often-forgotten code snippets, standard templates, hints to yourself, your editor configuration, soothing picture of a kitten, etc. Here’s an example from a very experienced partipant (Måns Magnusson), heavily focussing on algorithms: https://github.com/exoji2e/notebook.
- Three hour warm-up event Friday 20 September 16-19. ITU will host a 3 hour warm-up event two weeks before NCPC at https://open.kattis.com/contests/ne66md. The main goal is to give you a chance to experience a mini-contest as a team (for instance, who does the typing?) Register informally at talk.itu.dk/ncpc , and the Computer Science Department will provide free food (probably sandwiches and soft drinks). Brief intro at 15:45 in 2A03, we’ve reserved the tables on the 2nd floor (2R01, etc.) during event. Last-minute drop-ins welcome.
- Five hour warm-up event Saturday 28 September 11-16 . Exactly one week before the main event. Hosted by the Kattis people at https://open.kattis.com/contests/ncpc2019warmup.
I’ll give some extra lectures in various formats. The expected skill set that of 2nd year Software students, but everybody is welcome.
- 30 Aug, 13-14, repeated at 16-17. 2A08. Repeated at 16-17 same day. (Thore). Welcome. Kattis basics, NCPC basics, tips and tricks, questions and answers. Solution of NCPC 2018 problem B–babybites (where Thore’s team was 1st last year!) and C–codecleanups.
- 6 Sep, 15-16. 2A08. (Thore) H–houselawn, greedy algorithms, I-intergalactic bidding.
- 13 Sep, 15-16. 2A08. (Thore) Graph problems. deliverydelays (very hard! we didn’t manage to solve it)
- (20 Sep): No coaching, since there’s a warm-up event. at 16.
- 24 Sep, 8–10, Aud5. Dynamic programming I. Part of the MSc Algorithm Design course. Everybody welcome.
- 1 Oct, 8–10, Aud5. Dynamic programming II. Part of the MSc Algorithm Design course. Everybody welcome.