Core Information

The SICSA Programming Challenge is a programming competition to solve a set of given problem specifications within a given time period, typically within one afternoon. There will be prizes at the end of the competition: 100 GBP for the winner, 50 GBP for the runner up, and a judges price of 50 GBP.
This event is graciously funded by the Scottish Informatics and Computer Science Alliance (SICSA).

The next SICSA Programming Challenge ""brave Bartik" will run on Wed 17.6. from 12-6pm online using the OpenKattis.

These programming challenges will be an opportunity for students to test and exercise their programming skills, which will be useful in preparing for the next academic year. It will consist of a sequence of programming tasks that are posted through OpenKattis. Each successfully solved problem will gain you points, and the overall highest scoring student will be the winner of the challenge.

There is no need to register for the event. The contest will be setup a few days before the scheduled data, and sign-up is possible from that point onwards or directly when starting the competition. We'd enourage participants to take a look at the screencast below to familiarise themselves with the system. To learn about usage of the system, problems can be solved directly (outside a contest) and be submitted for validation. setup of the programming challenge.

Set up of the Challenge

  • There is no need to register for the challenge beforehand, but you'll need an OpenKattis account (which can be linked with e.g. your gmail account). So, setup this account beforehand.
  • When setting up the account, do use your real name and identify your institution, if you want to participate in the run for the prizes. Email me your Name on OpenKattis and your martic no by the end of the challenge, so that we can validate the winners.
  • This challenge is for individual contributions, so when you are asked about a "Team" just put down your name.
  • More info about OpenKattis usage is in the next section below.
  • There are some more comments on the challenge tasks (with pictures) below.

Basic Usage

Most importantly, check the embedded video about OpenKattis usage below.

Some quick tips on OpenKattis usage (see embedded screencast below):

  • IMPORTANT: all problems read from stdin and write to stdout (see INPUT / OUTPUT examples for the required format given in each problem)
  • when you click on the 'help' tab and then the language you choose, you'll get useful info, often including a code snippet how to read from stdin and convert to e.g. Int (search for 'Solving a problem')
  • you are free to choose any of the supported languages (see 'help' tab for a list)
  • the problems are sorted by difficulty, and scores (bracketed number under/next to the problem) reflect difficulty (roughly)
  • you don't need to do the problems in sequence: just pick the ones you fancy and have a go at implementing them
  • the validation of the submission checks both functional correctness (produce the right output for a given input) but also performance (that it runs within a given time limit); so you must make sure to produce an efficient implementation;
  • if this is the first time you use OpenKattis, I'd recommend to start with the first (easiest) problem, to learn about the environment (and reading/writing to/from stdin/stdout)
  • when validating your submission, you will get only basic info about passing and failing; unfortunately, you will not see the input/output of the test case that failed; for debugging you might want to create some test cases yourself to check for corner cases in your implementation;

On scoring in OpenKattis:

  • For a successful submission of a solution (i.e. the uploaded program passes all validation checks) you'll get the full points associated to this problem.
  • Your final score will be the sum of successfully solved problems; so you can choose whether you want to go for a few high scoring or several low scoring problems.
  • The winner will be the participant with the highest total score, using time as a tie-breaker.
  • Important: For each unsuccessful submission, you will get a time penalty of 20 minutes, added to the total time you spent on the problems.
  • Therefore, you want to be careful not submit too often or you will accumulate time penalties.

Main resources:

  • The platform we will be using for the competition is: OpenKattis
  • A screencast with basics about OpenKattis usage is available below as an embedded video that should be playable in your browser

Embedded video with guidance on how to use OpenKattis (video/webm with VP8 codec; maximise when viewing):

If the embedded video doesn't work, use this direct link to the video on MS Stream.

Comments on the tasks for the SICSA Challenge

Keep in mind that the high-scoring tasks are often performance bound which means it might be fairly quick to get a correct solution together, it's far trickier to get an efficient implementation, that passes all the checks during validation. Typically, the first checks cover basic correctness, and the later checks cover performance.

Some extra samples of input/output for some of the problems:

Task F: gerrymander

A picture explaining the gerrymander problem (last):

Summary from the first HWU Programming Challenge

Different communities deal quite differently with the current Covid-19 situation and with lock-down. Some get stressed over a flurry of online meetings, juggling several different technologies. For your average hacker, who is quite used to spending hours, days and, well, weeks in front of the screen, the main challenge is to find some interesting activity to keep busy and focused.

That's where the Heriot-Watt Programming Challenge comes into the picture. On Wed 13th of May, the Computer Science department ran an online programming competition, tailored for undergraduate and (taught) post-graduate students, featuring a series of programming tasks to be completed in a one afternoon session. The team led by Dr Hans-Wolfgang Loidl picked the OpenKattis platform which provides a huge repository of online problems, and performs automatic scoring of challenges submitted by students. As many of these platforms, it markets itself as a tool for preparing for technical interviews and honing programming skills, thus it is highly relevant for computer science students, who will be entering the job market soon.

Overall, the event was a great success, judging from the feedback the students have been giving in post-event surveys: 90% of the student answered Yes to the survey question

"Would you be interested in participating in a similar challenge again?"
Some quotes given by the students in the free-format feedback questions are:
"The best way to wake up the mind during these dull times"
"Wonderfully good fun and just challenging enough to be exciting"

Building on this success, we have now reached out to other Scottish universities with a plan to expand the programming challenge, and make it a national, Scottish event. We are currently applying for SICSA funding for this event, and are planning to give out Amazon vouchers as prize money, as we did for the first instance of the Programming Challenge. Our thanks go to our colleagues who helped organise the event, in particular Dr Rob Stewart and Dr Manuel Maarek, and to our IT support team in the Computer Science department for providing a top class infrastructure for running this event.


This event is supported by SICSA