In late 2014, the Computer Science and Engineering department of BRAC University hired a trainer to prepare its students for various national-level programming contests. I attended the training session, which is how I became seriously involved in competitive programming.
However, I quickly realized that I lacked the critical thinking skills required to solve programming problems. As a result, I had difficulty coming up with solutions, was slow, and constantly needed help from the internet. My performance was terrible in practice contests.
To improve, I needed more practice. I started solving more problems on UVa Online Judge, where I solved over 700 problems in just three years. Solving problems in bulk helped me:
- Improve my typing speed
- Find solutions to problems faster
- Learn about various built-in functions of my preferred programming language
- Become comfortable writing code for complicated solutions
In mid-2015, the trainer’s contract was not renewed, so my training session peers and I took the initiative of training our juniors. We taught them various algorithms, data structures, and strategies and prepared problem sets for practice.
Being a trainer helped me learn a great deal. I constantly had to ensure that I fully understood the concepts of the topics I was teaching so that I could clear any doubts and answer any questions my juniors had. I even learned a lot by reading other people’s code, such as new algorithms, concise code expressions, and useful built-in functions of my preferred programming language.
There is much more I would like to share, but that will have to wait for another post. Until then, happy coding!