There are terms we all have listened to, we all feel that we are doing, but none of us actually know what it is or how it works? Big Data, chaos theory, deja vu, and competitive programming are few of them.
I see coders swinging between various online websites, tutorials, and coding platforms and ended up having nothing. The reason is they wonder much, learn less. When I started my journey two years back I was no different. But the rugged competition taught me things. So I will tell you everything I know about competitive programming.
What is competitive programming exactly?
If you go to wikipedia it will state that competitive programming is a sport, where programmers are no longer programmers, they are sports programmers, and it is true. Competitive Programming is an environment where you have to code with the least resources, making the best logical and computational solution to a given problem. With my experience, most of the problems are real-world related (sorry kiddos no Armstrong number checking ).
You are supposed to either work alone or do a team play. Why team play is important? Because then you get a chance to work as a leader and furnish your leading skills. So that’s what competitive programming is, but where to do it? and what to learn for it ?. Let’s dive deeper.
Learn to do Competitive Programming?
Where to learn competitive programming is like I know football, where to learn competitive football. The answer is there is no difference except the environment. Maybe you are an awesome dribbler at your home stadium but how good are you at sand? Maybe you are an amazing striker with an unofficial ball, but how well do you kick an official weighted football?
We all think of competitive programming like the one who codes firsts, wins. But it is as wrong as “Earth is Flat”. Let me mention all that is needed:
- Logical Thinking: Most of the questions will test your logic
- Efficiency: How much execution time and space is used by your code
- Programming Fluency: Though most of the competitive programming competitions are language independent, you should be fluent with the language you use, knowing every inch of it, so you don’t waste time googling “how to insert at beginning of list” or reinventing the wheels.
- Few Programming musts: You should have expertise in Data Structures, APIs, and Algorithms.
- Standards of Competitions and environment: Most of the programming competitions have some standards like inputting from Standards input streams and output to standard output streams, usage of API, and other restrictions, you should be aware of them.
- Speed: One of my school friends was great at solving logic in Java, but rarely codes, at the final exams when we have the practicals we all were standing out of the room, done with our practicals but he was still inside, why? His typing speed was barely 10 words per minute. So you should have good typing speed, test yours here.
That was a bunch of information and lots of reading. Let’s dive into — where we can apply this information.
Where to do Competitive Programming?
There are many places to furnish your skills, few of them are listed below.
Shortest Answer: Hackathons, Webinars, Coding Websites.
Way with Multiple Benefits: Make real World Projects.
We all don’t have time. We have time to watch that last episode of our favorite series on Netflix, we have time for that last shot of vodka, we have time for academics, but for what matters, we don’t have time. And for such peoples I will say there are amazing platforms like :
HackerRank (specialty about this is that you will be given a global rank, and if you perform well there might be chances that you can get direct offers for a job, at least that’s what everyone says.)
Kaggle (This one is really good for beginners, it uses Jupyter notebook environment for coding, a great kick starter)
CodeChef (I personally don’t use it but listing it as it organizes a lot of hackathons and online competitions)
For those who wanna take time out of their schedule for their passion, I will suggest that you make the real-world projects, it can be anything useful, anything that contributes towards the society or solve a mass problem. Ex. Database Management System for a pharmacy, Charity collection website for a local church, Quadcopter with embedded AI, or just a lit game.
Quick Boost 🚀
As I already mentioned you should be expert in certain fields so I am listing a few of my personal favorite books:-
👉For furnishing your Algorithms: Introduction to Algorithms, 3Ed
👉For furnishing your Data structures: Data Structures and Algorithms in Python Book by Michael H. Goldwasser.
👉Work on your Design Patterns and read other’s code, you can simply go to any open source platforms like github and see how real-world working company codes are written and mold yourself accordingly.
At The End
As part of the journey is the end, to sum up, I will suggest furnishing your leadership skills, coding efficiency, data structures, algorithms, and language proficiency. Take part in as many hackathons and challenges you can, no matter you win or lose, you will gain itsy bitsy experience and finally, a byte is made from those tiny bits.
I will love to be the part of your programming journey, while you can join me in mine at IronProgrammers. Feedbacks are always welcome at firstname.lastname@example.org.
Happy Coding 🎉