I've noticed a lot of my friends are taking paid DSA courses costing thousands, but I can't afford that. I want to learn DSA concepts and practice them with free online resources. I know I need to practice questions, but my understanding of C++ is pretty basic—I don't know much about OOP, time complexity, dynamic programming, linked lists, trees, etc. If I get stuck on a question or concept, how can I clear my doubts?
4 Answers
While you don't have to take a course, grasping the concepts is key. Just dumping a bunch of memorized answers won't help you in the long run, especially in the workplace. The best way to learn is through practical application, so engage with different data structures and algorithms through projects or practice problems. If you hit a wall with a question, it could mean you need to focus more on understanding that particular concept instead of just trying to solve problems blindly.
You don't necessarily need a course to learn DSA. It's like any other subject; if you're someone who can self-study, you're good to go! Make sure you understand the core concepts before jumping into problem-solving. Just memorizing solutions won't get you far. If you find yourself stuck on a question, that's a clear sign you need to revisit and strengthen your understanding of the underlying concept. It's all about building a solid foundation.
Honestly, just download some resources online if you need instant access. But be cautious about the sources you use. Instead of just rote learning, watch math-focused YouTube channels—they often explain algorithms in a way that's easier to digest. If you're committed to truly understanding DSA, be ready to invest plenty of time and effort into it. Just remember that mastering concepts is different from just getting a job; both can overlap, but they aren't the same thing.
Definitely understand the concepts behind DSA, or you will struggle. If you don’t know how time complexity works, for example, your programs could run inefficiently, and you wouldn't even know why. It's important to structure your code properly to avoid unnecessary complications later. You don't need to be a pro, but recognizing how these concepts function is crucial—otherwise, brute-forcing solutions will just wear you out!

Any recommendations for free online resources? I really want to grasp these concepts.