How to get started with competitive programming

Some people enjoy solving problems, and then there are those who land top tech jobs by doing just that. Competitive programming (CP) is a sport for the mind, where coders have to solve problems with efficient solutions on a ticking clock. It is a wonderful avenue for anyone to become a smarter coder, and be ready for some of the most competitive job interviews in the world. We've broken the enigma down to a short guide so you can get started too.
Getting started
The first step is choosing a programming language. While many competitive programmers prefer C++ for its high performance and flexibility, C is also a solid choice, though it might be a bit more challenging for beginners. What about other languages like Python and Java? Although less performant and popular, they are still accepted in the CP community as valid alternatives for beginners.
"It is more important to develop comprehension and problem-solving skills at the beginning. If you don't know where your destination is or which route to take, then it does not matter how good your car is, you will never get there," says Dr Asif Mahmood, Assistant Professor of Computer Science and Engineering at Independent University, Bangladesh, and an experienced competitive programmer. "Similarly, understanding and solving the problem is more important, especially for beginners, than the choice of programming language."
After your pick, you must learn to speak this language well. By embracing the syntax or grammar of code, you can let the computer be an extension of your mind without getting lost in translation. Dr Mahmood added, "All newcomers should spend a good chunk of their time to understand how code is executed inside the machine. All data structures have their unique use cases and their own set of advantages and disadvantages. It is important for the young students to practice a lot, and understand how their approaches can make a solution efficient or not." In essence, this will teach you how certain coding approaches can be faster and use less memory.
If you're new to coding, platforms like HackerRank are a great starting point. They offer lessons that gradually increase in difficulty, helping you build a strong foundation. To get a feel for how CP contests work, try platforms like Codeforces. Once you're comfortable with these, you can move on to sites like LeetCode and AtCoder, which focus on problems that mirror the kinds of challenges you'll face in coding interviews.
Finally, once you feel comfortable solving easy problems and want to prepare, you should try and form a team to participate in contests in person. Most contests require a three-person team from the same institution, so reach out to your peers and mentors in your own school or university and find your own people. Participating in team contests will accelerate your journey, with a good team complementing each others' growth and skills in various areas.
The big leagues
If you are an undergraduate student, CP has a breadth of opportunities to offer you. There are a variety of programming contests for university teams that take place all year round. The biggest of these is the International Collegiate Programming Contest (ICPC), where teams from all over the world get to fight for glory. The ICPC has a regional round in Bangladesh, usually held in Dhaka, followed by the winners moving on to the next round. Out of the eight geographical ICPC Regions, winners from Bangladesh fall under Asia West, and from there participants can advance to the highly coveted ICPC World Finals.
There are also numerous Inter-University Programming Contests (IUPCs) organised by universities all over the country, such as Shahjalal University of Science and Technology (SUST), Bangladesh University of Engineering and Technology (BUET), and more. These contests are more frequent than the yearly ICPC, and offer a great introduction to the arena of competitive programming. These contests offer great cash prizes to the winners, often to the top ten teams, as well as an opportunity to network with leading tech firms that tend to sponsor contests.
Participating in these contests not only hones your skills but also keeps you motivated to push yourself further. Most universities have vibrant CP communities, so connecting with like-minded peers can make learning more enjoyable and collaborative. Munawar Shakil Muhit, a veteran in the CP scene from the University of Dhaka, shares: "CSEDU has fostered a strong contest culture, encouraging newcomers to join the community through sessions, problem-solving classes, and of course, the success of our top problem solvers." He added that when a community has a top-class culture and successful seniors willing to help, you're already halfway to success.
What then?
Solving problems in CP is rewarding in itself, but the real advantage is how it builds your ability to reason and prepares you for the toughest tech interviews. Israfil Diganta, Software Engineer Level II at Enosis Solutions and Competitive Programming Instructor at American International University Bangladesh says, "To be hired, you need to present employable skills from your university life. Although there are many ways to do so, such as by building projects or participating in hackathons, CP is the easiest to get started with in my opinion."
Diganta shares that all you need to get started is basic coding to begin solving problems and participating in contests. As such, you will develop transferable skills and grow outside your comfort zone. "Companies want the employee to be clay, ready to be moulded to the job at hand. Applying logic to solve a problem is the same skill, no matter what framework or tools we use. CP allowed me to secure that invaluable skill to utilise in my career," says Diganta.
Diganta further reflects, "In my time interviewing for multiple companies, I never faced any question that I had no idea how to solve. My experience solving harder problems in contests made the interview questions I faced much easier to tackle for me." Mastering problem-solving strengthens your ability to reason, core computer science concepts, and how to combine the two for the task at hand - all invaluable in both industry and academia.
By consistently practising, mastering essential concepts, and engaging with the community, you can significantly improve your problem-solving abilities and position yourself for success in both coding competitions and the tech industry.
Comments