Let me just start by saying this competition was really fun and had a lot of cool, challenging problems. I really enjoyed it, and wanted to take a little bit of time to provide feedback on each problem. Sorry in advance if it’s long-winded!
1. Quals Problem 1 – As a first-time competitor, I have mixed feelings about this problem. The only trick was finding the ATP equations. I’m not sure I liked having to hunt that down as it felt like annoying domain knowledge instead of being a test of problem-solving and/or coding. However, once found, the problem was fairly straight-forward and it felt good to be mostly through qualifying just on that problem.
2. Quals Problem 2 – This problem was clearly the hardest of the qualification problems. I like the way the second part built on the results of the first part. Unfortunately, I was only able to solve the third part through an entirely different approach (essentially a branch-and-bound brute force is how I did it). I wish that third part had been more closely related to the first two since those seemed to have clever, efficient solutions (granted this could just be me failing to see a clever solution).
3. Quals Problem 3 – I loved this problem. I knew how to generally tackle it very quickly based on similar problems from basic bioinformatics class, but it was different enough to provide a good challenge. This problem also very elegantly increased in difficulty, allowing for quick gathering of partial points with the final problem culminating in the greatest challenge/reward. If I was a teacher, I would seriously consider using this problem for a homework assignment on dynamic programming.
4. Finals Problem 1 – This was my least favorite problem of the whole competition. It seemed to require fairly extensive domain knowledge that I couldn’t find and/or didn’t understand. Somehow, I managed to solve part 1, but couldn’t figure out how to adapt that approach to part 2. I’m going to review the tests later to see if I can reverse-engineer it. Regardless, I wish the problem had either had a clear-cut, simple example (as many others do) or a clearer explanation of the problem.
5. Final Problem 2 – Very well designed problem and my overall favorite in terms of algorithmic design. The problem sufficiently increased in difficulty for each part and I think I see how to fully solve part 3 now. My one critique is that some of the language was confusing. For example, on the main page it says “directed acyclic graph” and then later on the problem pages “undirected version …” even though solving the problem is still a directed graph. The language may be technically correct, but it was very confusing until I knew the tests were passing and the graph at least operated as a directed graph.
6. Finals Problem 3 – I have mixed feelings about it depending on what the competition was trying to accomplish. I solved the problem through a combination of publicly available tools (i.e. aligners), programming, and then what was essentially computer-aided assembly. If the expectation is to know some of that domain knowledge, then I think this was one of the better problems in the competition and I really enjoyed working to solve it. However, I can’t imagine trying to solve this problem without that domain knowledge.
7. Finals Problem 4 – Conceptually, I like this problem, but it seemed pretty easy. In my case, I just ran some overlap tools (aka, domain knowledge) and then clustered based on the output. The time to spin it up and run on everything was small, and after tinkering a little bit I simply moved on to other problems. My scores were approximately the same as others, so I imagine they did the same or very similar. However, without that domain knowledge this problem was probably quite challenging.
8. Finals Problem 5 – Thematically, this was definitely my favorite problem in the finals. It was conceptually really interesting, but this problem was really, really challenging in my opinion. Going in, I don’t think I realized just how challenging this problem was going to be (I should’ve realized this is a tie-breaker and spent less time on it, so that’s really on me). Technically speaking, this problem was very difficult to work on through the Stepik UI since it requires so much feedback. I’m not sure I would recommend this type of problem in the future (although I did really enjoy breeding my cows :D).
Overall, I found this to be a really awesome experience and I highly recommend anyone seeing this to go check out the problems even though the competition is over now. Looking forward to hopefully continuing this competition in the coming years!