Topic outline

  • CORONAVIRUS UPDATES

    This year you can take part in all of our course activities remotely!

    OVERVIEW

    This is a practical hands-on course that is intended for students who are interested in competitive programming and algorithmic challenges. During this course, you will learn how to solve algorithmic programming challenges, both individually and as a team.

    The course is worth 2–5 credits. This course is suitable for students of all levels, from BSc students to PhD students. The lectures and the course material will be in English.

    PREREQUISITES

    Students are expected to have a working knowledge of computer programming, algorithms, and data structures, and preferably some practical experience with C or C++ programming languages.

    Our first meeting will also serve as a prerequisite test; you can there see if you have got sufficient skills to successfully follow our course.

    COURSE FORMAT

    During periods I and II, we will organize two 90-minute practice contest each week:

    • Mondays, at 16:15-17:45
    • Wednesdays, at 16:15-17:45

    Our practice contests are similar to normal programming contests, just shorter. In each contest, the submissions are automatically graded and you will immediately see whether your solution is correct or not. Some of the contests will be solved individually, some as teams. You are primarily competing against yourself, trying to solve as many problems as possible, but in each contest there will also be a scoreboard where you can see your standing in comparison with other students.

    Each week on Wednesday we will announce the topic and the rules of the following week’s contests, and provide pointers to some self-study material. Each week you are expected to spend 6–8 hours on your own to self-study the material. The recommended timeline looks like this:

    • Monday: 1.5 hours, contest
    • Tuesday: 1–2 hours, self-study for Wednesday’s contest
    • Wednesday: 1.5 hours, contest
    • Thursday–Friday: 5–6 hours, self-study for next week’s contests

    During the course, you are also encouraged to take part in NCPC, the Nordic Collegiate Programming Contest.

    The course is organized using Zulip, and all participants are expected to follow our Zulip discussion forum actively during the course, especially before, during, and after our contests. We will use Zulip both for official announcements and for all kinds of discussions related to the course, material, and contests. All course material will be made freely available online.

    WHAT TO EXPECT

    • You will get a lot of practice in creative problem solving and writing correct and efficient programs quickly.
    • We will learn about useful algorithmic ideas (e.g. flow algorithms and string algorithms) and how to apply them in new contexts.
    • We will learn about general algorithm design paradigms (e.g. dynamic programming) that are broadly applicable in coming up with new algorithms.
    • We will learn to use different programming tools for solving different kinds of tasks. There will be some practice contests in which you will be forced to use C++, and some practice contests in which you will be forced to use Python, so you will get some practice in using both of them, even if these are not your preferred programming tools. You do not need to know C++ or Python in advance, but you should be willing to learn enough of them during the course.
    • There will be also team contests in which you will get to learn other students and get practice in solving problems as teams.
    • And we will try to have fun!

    BEFORE THE FIRST MEETING

    • Complete the course registration in Sisu as usual. (If you have problems with the course registration in Sisu, please email Jukka Suomela to let us know that you would like to take part in the course.)
    • Read this web page completely.
    • Join the Zulip discussion forum of our course. (We will send Zulip invitations to everyone who has registered for the course in Sisu.)
    • Follow the announcements in Zulip and be ready to start solving problems on Monday, September 13, at 16:15.

    COURSE STAFF

    The course is organized by Jukka Suomela and Jan Studený.

    GRADING & CREDITS

    In each contest you will get points if you solve sufficiently many problems correctly (we will announce separately before each contest how many problems are needed). In our regular practice contests on Mondays and Wednesdays you can get 0–2 points per contests, and if you take part in NCPC, you will get additional 0–4 points depending on how well you (or your team) does.

    The grading is pass/fail. You can get 2–5 credits as follows:

    • 18 points = 2 credits
    • 24 points = 3 credits
    • 30 points = 4 credits
    • 36 points = 5 credits

    There are in total 23 meetings plus NCPC, so you can get in principle up to 50 points. Note that you can easily complete the 2-credit version already during period I if you want.

    HELP IS AVAILABLE!

    During our practice contests:

    • Please do not post anything in our public Zulip streams, to make sure you are not accidentally spoiling the fun and to let others focus on the contest.
    • Please follow our public Zulip streams for our announcements. We may occasionally post hints related to the problems during a practice contest.
    • You can ask for help with private Zulip messages if there seems to be a technical problem in our end (e.g. our submission system is down), or if the description of a problem needs clarifications (e.g. it is impossible to understand exactly what you are supposed to do, even if you read it carefully).
    • During the last 45 minutes of each contest (i.e., at 17:00–17:45) we will also provide private help if you are not making any progress with solving the problems. We will not solve problems for you, or debug your code for you, but we may provide hints that help you get in the right direction. Join the Zulip stream #queue and post a help request there!

    During NCPC:

    • Please follow the official NCPC rules strictly, and see their instructions for e.g. submitting clarification requests.

    All other times:

    • If you have any questions or comments related to any of our course material or the problems, please feel free to post in our public Zulip streams!
    • Please do not use private messages unless your question is in some sense confidential.

    COLLABORATION RULES

    You are free to discuss with other students before and after contests but not during the contests.

    For each of our practice contest we will announce in advance whether it is solved individually or as a team. For individual contests, you are on your own during the contest; you cannot discuss the problems with anyone else. For team contests you can freely discuss with other team members, but not with anyone else.

    In our practice contests, unless otherwise specified, you can freely read any material (you can freely refer to your own notes, textbooks, and Wikipedia, search with Google, watch YouTube videos etc.) but you cannot ask for help (this includes posting questions in online forums, or emailing or calling your friend).

    If you take part in NCPC, you will need to strictly follow the official NCPC rules.