DSA can be seen as three step process, A. Learn a language, B. Learn a data structure, C. Apply it in algorithms. Let's dig in shall we?

Learning a language is THE MOST asked question so, here's an answer. What language do I pick, short answer is it depends, the long of it is this. You have primarily three options,

  1. C/C++
  2. Java
  3. Python

What to pick and why? Simply speaking, most programming languages have the same skeleton just different ways of doing it. Therefore, they are used in different ways.

C++ is a powerful language which gives most of the power in your hands, this includes handling how much power or resource you would demand from a system. What kind of system memory you wish to utilise. If you have a timeline of over a year or more this is the best option for you. Though this has a long learning curve and does take time, it helps a lot in the future since almost every other language on this list has features taken from C++. Lastly, if you wish to join Competitive Programming this is the way to go.

Java is a language that falls somewhere in the middle where it's not too easy but not too frustrating as well. Most service based companies who are in the Asian belt prefer Java as a language in many of their projects. Bearing that in mind. If you're aiming for a job in a service based firm this is the way to go. The learning curve is a bit less than C++ but again the concepts are quite empowering for a programmer in their career.

Python is the kingpin that runs the Wild West that's IT these days, Python would be the ideal choice if you're a short deadline and need a job ASAP. The concepts are fewer and the language is less verbose.

Resources to learn the languages:

For C++

1 First two lectures on Harvard's CS50 (David J Malan is one of the best explainers of Intro To Programming I've ever seen)

  1. W3Schools www.w3schools.com (Works great as a course material and reference)

3. www.learncpp.com (Frankly, the best place to learn imho)These should be enough for learning C++

For Java

Derek Banas has a fantastic tutorial on YT. Tim Bulchaka’s Java Masterclass course (Paid Resource)Coding With John is another fabulous resource.

For Python

Corey Schafer on YT

W3Schools (Works great as a course material and reference)