Good morning, class! Today, we won’t be discussing how to solve problems or the reasons for the lacking tech culture on our campus, because that’s boring and nothing productive ever comes out of the self-pity, blame and regret.
Welcome to Coding F111.
This is for enthusiastic coders, people who are bored of household chores and want a reason to be on their laptops, and perhaps even those who have been inspired by those CSI three top hackers from TV. This class is not meant to remind you of placements or the nightmares computer science- oriented people may face ahead. Coding is certainly a geek-sport, but that doesn’t mean it’s not fun. Nor does it mean it’s not for you.
As one professor I know might have put it…
“You are here to learn the art of competitive coding. As there is no fancy application waiting for you at the ending, I expect some of you might not consider this productive . But then I don’t expect you to really understand the beauty of the compilation success message or the delicate power of logic that creeps through code and can bewitch the mind and ensnare the senses..
I have not asked you to take out your books.
I wish to speak to you, and I want your full attention. Competitive programming techniques are many, varied and ever-changing. Each time an error is solved, two more take its place. Your only defense is complete focus on the problem at hand. “
On that note, let us begin.
The Starting Phase:
Where do we start? Obviously we start from a coding website. What a silly question, right? It is at this point that people start using SPOJ or Code-Chef and get fed up with the results. These sites are a pain in the you-know-where for everyone. The number of run-time errors flashing on the screen can almost compete with the number of times you’ve been rejected in your love life. These sites are not the place to start.
Instead, the author recommends starting from Code Forces and solving problems in division A or B.
The Learning Phase:
People often make the mistake of trying to learn everything related to a topic before starting to code. This is pure suicide for the spirit. There’s always something new you can learn, and there’s no end to it. You will inevitably give up, and your coding career will end before it even started.
Continuing our fancy for comparing apples and oranges, the number of websites available for learning how to code is probably only surpassed by the number of GOT downloads on the internet. That being said, in our humble opinion, the best forums for you to refer to are Geeksforgeeks and Stack-overflow. If you’re looking to learn from scratch, the tutorials on Top-Coder and the MIT Open Courseware lecture series are the best out there.
This phase will often make or break the life of a programmer.
Try to visualize the problem first. Remember that you needn’t be Ramanujan to be able to solve the world’s toughest problems in your mind. Don’t be afraid to use a paper and pen. There’s no shame in that. Make sure to write down algorithms/pseudo code. Along the way, you might encounter a problem which which holds you up for a few hours. Just remember that you are not truly stuck until you give up trying.
The Debugging Phase:
Also known as ‘hell’.
Debugging usually takes up twice as much time as writing the code. The devil is in the details, so be very careful while going through your code. Often, fixing one error can cause five more to pop up. Don’t be disheartened. Keep at it.
Or just sell your soul, and use a debugging program.
The Code Contest Phase :
Contests provide a great way for you to evaluate yourself and find out where you stand with respect to other coders. Contest problems are specially designed to test your logical ability and your technical knowledge. Just trying to convert that big red cross into a green tick can improve your skills tenfold. But people often make a big mistake here. After the contest is over, they don’t work on the problems that they weren’t able to solve.
The Depression Phase:
Also called ‘ An Average Day In Life of a Programmer’.
It takes sheer hard work and determination to become good at competitive coding, but it’s possible if you keep your spirits up and keep coming back for more. (Read SpreadTheGyan to find out how)
You’re not alone. There are thousands of people out there struggling as much as you, if not more, and there are thousands more out there willing to help you get past this struggle. All you need to do is try.
And that ends our class for today.
Good day to you, until we meet next class for “Anger Management… while coding.”