I like Sublime Text because it's fast and light weight. Another popular choice is Visual Studio (paired with some useful extensions). However, anything is fine as it comes down to personal preference.
Link to setting up Sublime
Link to VS extension (cph)
Spoiler
It's C++ and here's why.
tl;dr: C++ is the most commmonly used 'fast' language, that also comes with great functionality.
Java is also a popular choice, however. So if you're not already familiar with C++, it is advised that you switch over; Although you may choose to stick with Java if you feel that it's a better choice. There are infinitely many links on the internet that guide you through the basics of these languages, so none will be mentioned here.
STL, or Standard Template Library, is a huge library of useful functions. If you're not already familiar with it, this is a good place to start. Try out a few problems here.
Here is a comprehensive guide on Competitive Coding websites (primarily CodeForces, which I recommend). Before you actually start it is important to familiarize yourself with the big-O notation. Understanding Time and Space Complexity is the only prerequisite (apart from knowing a language). Once you've done all this, you're ready to start.
-
This covers most beginner topics. Upsolve every problem from these posts. Remember that these are only the first 2-3 problems that will introduce you to the topic. It's upto you to explore further.
-
Once you're familiar with a particular topic, you can go to problemset on Codeforces and filter by tag and/or rating. From there, it's just practice, practice, practice.
-
Virtual Contests are a great way to improve speed. You could have all the conceptual knowledge in the world but that wouldn't mean anything if you aren't fast.
Learn new topic > Practice problems > Improve speed > Learn new topic > Practice ... Rinse and repeat.
Track your progress
Rating Predictor (Download the extension)