About this course¶
This is a practical, hands-on course intended for students interested in competitive programming and algorithmic challenges. During the course, you will learn how to solve algorithmic programming challenges, both individually and as a team. You will get a lot of practice in creative problem-solving and in writing correct and efficient programs quickly. You will learn about useful algorithmic ideas and how to apply them in new contexts. You will learn to use different programming tools for solving different kinds of tasks. You will get to know other students and gain experience solving problems in teams. We will also try to have fun!
This A+ site is the home of the course. All course information, weekly instructions, study material, contest links, homework, and point submission forms will be published here.
Warning
Before doing any course-related work, make 100% sure that all AI assistance is disabled in your development environment. AI assistance is forbidden for all course-related work, including practice contests and homework.
Prerequisites¶
This course is suitable for students of all levels, from BSc students to PhD students. Students are expected to have a working knowledge of computer programming, algorithms, and data structures, preferably with some practical experience in C or C++. Our first meeting will also serve as a prerequisite test, allowing you to see whether you have the skills needed to complete the course successfully.
Course format¶
We will organize two 90-minute practice contests each week. On Mondays, we will usually have solo contests, in which each student solves problems individually. On Wednesdays, we will usually have team contests, in which students are randomly assigned to teams of two or three members. We will meet on Mondays and Wednesdays in hall U9 at 16:15, so please arrive on time. The contests run from 16:20 to 17:50. During the second half of each meeting, help is also available in room U262.
In each contest, submissions are automatically graded, and you will immediately see whether your solution is correct. You are primarily competing against yourself and trying to solve as many problems as possible, but each contest will also have a scoreboard where you can compare your standing with others.
For all CSES contests and homework, you must use the pre-created account assigned to you by the course staff. Never create or use a personal CSES account for this course. Account assignments are randomized each week. You will receive Monday contest and homework credentials on paper at the Monday meeting; if you miss Monday, you can still receive homework credentials on Wednesday. Teams and their Wednesday accounts are assigned at the Wednesday meeting.
During the course, you are also encouraged to take part in NCPC 2026 (the Nordic Collegiate Programming Contest, October 3, 2026), and in HIIT Open in autumn 2026 (date to be announced).
Workload and timeline¶
Each week, A+ provides self-study material and homework problems. In addition to the 90-minute practice contests, you are expected to spend 6–8 hours each week studying the material and solving the homework problems.
The recommended weekly routine looks like this:
Monday: practice contest
Tuesday: try to solve any problems from Monday’s contest that you did not solve during the meeting
Wednesday: practice contest
Thursday–Friday: do homework to prepare for the coming week.
Course staff¶
The course is taught by Jukka Suomela. The teaching assistants are Dũng Nguyễn, Minh (Luke) Tran, and Nguyen Manh Hung.
Our course staff will be available during the practice contests. We will help with technical problems throughout each meeting, and during the second half of each contest we will also provide hints in room U262.
Grading¶
To pass the course, you need to solve our homework assignments for at least 9 weeks out of 11 and accumulate at least 72 points in our practice contests.
Problems in solo contests are worth 3 points each, and problems in team contests are worth 2 points each (all team members will get points for all problems that the team solves). There are also additional points available for course feedback and participation in NCPC, HIIT Open, and other approved in-person programming events.
The course grade is determined by the number of points you earn:
Total points |
Homework assignments solved |
Grade |
|---|---|---|
≥ 72 |
≥ 9 |
1/5 |
≥ 90 |
≥ 9 |
2/5 |
≥ 108 |
≥ 9 |
3/5 |
≥ 126 |
≥ 9 |
4/5 |
≥ 144 |
≥ 9 |
5/5 |
The maximum number of regular contest points is 275. You can also earn bonus points from course feedback, NCPC, HIIT Open, and other approved in-person events. You will solve problems in CSES, but we will use A+ to keep track of the scores.
Supercoder badges¶
In each contest, the final problem is the most challenging task, and everyone who solves it will get a virtual supercoder badge. The three students with the most badges will each receive a certificate recognizing their outstanding achievement!
Collaboration rules¶
You may refer to ordinary written material in all coursework. This includes your own notes, textbooks, language and library reference manuals, and resources such as Wikipedia. However, all AI assistance is forbidden in all course-related work, including practice contests and homework. Before each course meeting, make sure that AI assistants, generative-AI-based code completion, and similar features are disabled in your development environment.
During solo contests, you may ask only the course staff for help. During team contests, you may collaborate with the members of your assigned team and ask the course staff for help, but you may not work with anyone else. All code that you submit during this course must be written by you—or, in a team contest, by members of your assigned team. You can reuse code you have written earlier, but you cannot copy code from the Internet, use code written by someone else, or use code produced with AI assistance. If you take part in NCPC, HIIT Open, or another external event, you must also strictly follow its rules.