So, you are like me and are interested in computer science and you want to attend some programming contests.
In Texas, most high schools will offer Computer Science 1 AP (AP test is sooo easy if you understand the material) and Computer Science UIL contests (University Interscholastic League).
However, these aren’t usually enough to fine tune your programming skills, as these tests focus on the execution of code, not the actual logic behind it. The high school programming contests I’ve gone to were mainly seeing if you could find syntax errors, follow code (and find the output), as well as write a few simple programs.
So I decided to look online.
Here are the websites that I have used and my thoughts on them:
- USACO website – If you are going to be good a Computer Science, this is the way to go. It offers training pages as well as contests (during the spring) that lead up to IOI (global computer science competition) if you want to represent USA. Which every high school student should shoot for, why not?
- The contest are usually during the weekends (open for 4 days) and each contestant has 4 hours to complete the assignment (from the time they first see the problem). I enjoy these contest because they are hard and challenging, and you can submit and ‘grade’ your program as many times as you like. It doesn’t deduct points for every submission, which is nice since I make a lot of careless errors. Although they don’t show you the test data, they tell you which tests ‘fail’, which is nice because tells me that I didn’t consider all the boundary cases (extraneous cases) and I can try and rethink the problem.
- These contests aren’t like the high school ones because the algorithm you use is IMPORTANT. The answer isn’t black or white, there are multiple ways to approach them (though most approaches aren’t efficient enough). Timeouts, when the code takes to long to execute is all to common, and it makes you realized that only using simple logic won’t cut it. (Especially for me :)
- However the training pages are pretty challenging right off the bat and you can’t continue without finishing all the problems. It really frustrates me because it isn’t in the level of difficulty, as some require a lot more thinking than others.
- I’m currently stuck on one of them, and I can’t seem to solve it, thus, I have switched to the other programming website.
- CodeForces – Right now this is my favorite website. It hosts contests almost every week (although it is not like USACO where there is a 4 day block to do it) it is strictly open for a certain time, which makes is impossible for me to participate in real time. [they have contests on Tuesday, and I’m at school so :(]
- However they have over 500 contests, each with 3-4 challenging problems. I doubt you will go through all of it.
- Each problem question is usually pretty long and thorough, which takes time to digest, but it makes the output much easier to verify.
- Skip problems you don’t like! If it is beyond your ability, why bother. (See next one)
- Got stuck? You can view other people’s solution to problems and see how they attempted to solve them. Instead of trying 10 more hours trying to optimize your existing code.
- Stack Overflow – Not actually a Computer Science practice website, however it is the wiki of questions. If you have a question, search it on Stack Overflow. It’s so easy!
- Huge community, if your question isn’t on it, ask it yourself, and there are plenty of people who write lengthy responses to educate you on the subjects.
Computer Science is fun and challenging at the same time. :)