Online Judges and Problem Sets
Solving problems on your own time using an online judge is an excellent way to improve your skills. These websites are repositories for a large variety of problems ranging in difficulty from beginner to very challenging. Additionally, they host online timed practice contests where you can gain further skills and experience. Note: problems discussed during club meetings often come from one or more of these websites!
A good solution to a competitive programming problem often requires implementing a well-known algorithm reliably, quickly, and efficiently. These open-source, competitive programming repositories contain implementations of known algorithms which have been stress tested to ensure correctness. Most of them are written entirely in C++, which can generate very fast executable code.
- KACTL: A C++ reference managed by KTH Royal Institute of Technology.
- UofA's Code Archive: A C/C++ reference managed by our club at the University of Alberta.
Algorithm and Data Structure Libraries
Advanced programming problems may require the use of efficient algorithms or data structures which you have never seen before. Thankfully, there are plenty of great resources which document the inner workings of such algorithms and data structures, and provide examples of problems to which they can be applied.