My OSN-K (Compsci City-level Olympiad) Experience
Hello-hello! It’s been a while, and the reason why I haven’t posted anything for a while is exactly because of this whole OSN-K competition preparation (and other school stuff, too).
My country, Indonesia, runs an annual Olympiad they call “OSN” (Olimpiade Sains Nasional/National Science Olympiad) for all sorts of subjects: from maths, physics, economics, geography, astronomy, and of course, computer science (just officially called “computer”). To get there, though, is no small feat—because you need to pass two of their exams first: OSN-K and OSN-P, each referring to the city-level and province-level exams, respectively. Oh, and, your (high)school must register you too to be able to join OSN-K—which may require another entrance exam depending on the school you attend.
Now, before we go further, I’d like to point out an interesting observation: this system where you have to pass two exams first—based on your school location—doesn’t really guarantee that the country will actually get the nation-wide top students.
Here’s an example:
- A, B, and C are from city X.
- D, E, and F are from city Y.
Let’s say that A and D won the city-level competition for wherever they live, respectively. Now, you can try to let both A and D compete together and see who would win. For example, A beats D. But it doesn’t really mean that D is second-best at this point, because if A is just so good, A might have beaten B and C (who both may be better than D) before both of them ever get a chance to continue to the next exam. It’s an unfair system, in my opinion..
With that out of the way, though, I’d like to share my funky experience with OSN-K.
Background
You can join OSN beginning from elementary level, but I never really got selected for any. They only had a few subjects too, like math and general science, and I never liked any of them—it’s only in high school that computer science subject (the only subject I like) began to be available.
The OSN-K computer science competition I joined contains questions similar to those you’d find in Bebras, but with more math, plus extra code-reading. Historically, though, pure discrete math questions dominate the question sets. I must say, I like the older questions better— especially the questions from around 2016-2023 that all have more discrete math than mathematical logic with less headache-inducing lore for each questions, which I’m better at. But alas, I was born a little too late, it seems like.
Anyway, their OSN-K official syllabus mentions several topics, such as:
- Discrete math
- Mathematical logic
- Boolean algebra
- Graph theory
- Data structures
- Popular algorithms
- …and general algorithm analyses
Olympiad level questions are pain in the ass to get right (at least for the inexperienced me). And if you can’t get one right, good luck finding the answer—even search engines or LLMs may not be able to provide an answer for whatever your question is. Your best bet is to befriend someone who’s good at Olympiad type of questions.
I was lucky enough to have quite a few of them since the early days of my high school, but I must admit that I was quite shy to ask :p So, early on, I’d dug through questions and try to get answers myself based on help from the internet. I’d still ask people when I got completely stuck, though.
Now, during those “early high school days”, I didn’t study much. I mean, for one, the OSN-K entrance exam at my school wasn’t even held until like 2 months ago. Also, compsci and programming are fun but I never really liked to dive the nitty-gritty theories myself. However, some of my extra-nerdy friends that I knew back then were my main inspiration—they make problem solving seem magical—I felt like I need to have that kind of skills too, which fueled my intents to join OSN-K this year and study for it.
The Club
The first step to join OSN-K was to join the “club” for whichever subject you’re interested in. For me, it was the computer science club. They had an initial entrance exam, too. Frankly, I felt quite pissed off because I originally didn’t get in, somehow (I think I messed up my arithmetics so badly; I was sick that day). I don’t know the details, but a senior of mine helped me to pass in anyway. It seemed odd, because I wasn’t even close to them. Was I thankful? Maybe.. but if I really didn’t deserve a spot then I should have not been allowed to join anyway.
Then, my school provided OSN-K training for club members which you can enter by taking another entrance exam. The entrance exam was actually mandatory for all members, and so I did it. Thankfully, I was accepted (the passing grade wasn’t that high anyway?), so I was slightly more confident that I really did deserve a spot in the club.
The Drilling
Everything had gone well past this point, so I started studying for OSN-K—even if I didn’t know whether or not I will actually join it. It was fun, although I was quite inconsistent :) Just me being me, but maybe it was partly because of my 10000 other side hobbies and school organization things.
How did I study? Thankfully, TOKI (the team that creates all question sets for compsci OSN-K) gave a hell lot of free resources for studying—from a free competitive programming course, a free competitive programming handbook, literally every single question sets they have made, and more. Those were my main resources up to that point.
Mock Exams
I joined some mock exams too for OSN-K. Oof, I was pretty horrible at them. But that was because the mock exams were actually harder than the actual thing
And added with the fact that my arithmetic speed is pretty darn average, I’d certainly flop in many mock exams—most of which were formatted like ancient OSN-K questions from the bronze age or something, all packed with human calculator-level kind of math.The other reason I was so terrible at mock exams was because I didn’t study the stuff I didn’t like. For instance, I didn’t study boolean algebra—my biggest enemy at that time.
Yet Another Entrance Exam
I was surprised to learn that you need to take another entrance exam for the actual OSN-K (yes, I did not know this early on). Around the same time, I got an offer to join FLS3N—another prestigious national-level arts competition.. BUT WITH AN INITIAL ENTRANCE ART SHOW OFF TEST TOO! I had to make this most off-putting life decision again: compsci or visual art?
I trembled. I definitely did not plan about FLS3N popping up in front of my face at all. Back in middle school, I joined FLS3N too, but I sucked so hard back then—and I felt like I wanted to do a redemption. Hmm.. I suddenly had an idea. I told my art teacher that I will join FLS3N under the condition that I fail my OSN-K entrance test ;P
Not gonna lie, I thought that maybe FLS3N would be better for me after all, since I feel like I hadn’t studied enough for OSN-K. I still had the next year for it, anyway. I then hoped that I would fail my OSN-K test so that I can have a chance to join FLS3N.
I took the entrance exam for OSN-K. It was mid? I couldn’t answer one or two (one of them is really vague), but the rest were fine. Then, yeah, I passed it and I was allowed to join. Man, I hated how my other grade 10 OSN-K participant kept on saying, “I actually did not want to join this, I don’t know why I passed” from since their OSN-K training exam up until the actual OSN-K entrance exam. Haha..
Final Drills
I spent a month or two for some focused self-training. Then, I bought (yes) some question sets alongside their answers and spent another two weeks for absolute maxx drilling I could achieve. I faced all my hatred topics: boolean algebra, set theory, greedy, modular arithmetic, and more.
THE DAY!
I was literally so dramatic the day before the competition, I swear. I treated myself with a Ghibli film, played some arcade games, coded something in Rust (Prefic), and self-reflected so deep as if I was gonna leave the world the next day.. but fair enough, it was kind of relieving and crazy that I had gone that far—considering that I have no experience with Olympiads before.
Okay, now, here’s the fun part: the actual competition day.
We were given a free bread for breakfast, and then we got a bottle of cold mineral water—pretty interesting stuff. How did they even chill the water?
Afterwards, other students across subjects and I took formal pictures together. Then, we all went to our computer lab to take our respective exams. I sat down and wrote down my username and password. When they finally gave us our exam token, I gracefully typed it out and started the exam.
The Exam Itself
Pop! I snapped into the exam questions. And what I saw the first time? *An image-based question*.
Wow, thanks, TOKI! Thank you for giving image-based questions that we have to copy to our paper first if we ever want to annotate it. Very much convenient.
And then there were more image-based questions, and other questions with pretty long lore that I had to read first. I absolutely hated the math and logic section—I was pretty unlucky there—making a few annoying mistakes I could have otherwise noticed if the exam didn’t have a time limit.
For instance, there’s this really annoying combinatorics problem. It was supposedly not too hard, but due to me dabbling with some harder similar problems the days before, my brain’s cache was pretty messed up. I started to analyze the question unnecessarily. I couldn’t finish that problem—dang it! It was quite literally a normal Fundamental Principle of Counting problem. I went galaxies away from that..
And then, I got into the code interpretation section. I was genuinely pissed off at that point, because it turned out that the math and logic part DID NOT CONTAIN TOPICS THAT I STUDIED REALLY HARD, like boolean algebra and set theory. However, I was soon relieved, because the code reading part is way easier—much, MUCH better than last year’s problem set. There’s only one problem: I didn’t have much time left! And while I did not skip any of the code reading problems initially, I could not do the last three ones because I only had 3 minutes left. It was so infuriating! I wish that I had started from the back of the page.
And then, 15 minutes before the exam ends, my keyboard decided to die randomly while I was trying to type out my answer. I legit panicked and called out the supervisor immediately. But as a compsci™ student who knows the best hardware advice ever (turn it off and on again), I yanked out the keyboard’s USB interface and plugged it back—and thankfully, it arose from dead again. Phew.
And so, the exam ended just like that. I had no idea how to feel—months and months of preparations all poured into one single (messed up) day. However, I framed the exam as a milestone and not the end of anything. I’m proud that I took the courage to face the topics I was bad at, and even got hooked to them. That alone is more than good, right? :)