Photo by Christopher Gower on Unsplash
How I’m Learning Data Structures and Algorithms as a Newbie
Learning DSA from the beginning...
Data Structures and Algorithms is one of those things that you know you need to learn but never plan for it. Or just start and give up along the way because, let's be honest, DSA is tough. However, DSA can help in sharpening problem-solving skills, which, ultimately, can help you become a better developer.
And, unfortunately, when it comes to interviews, problem-solving skills are mainly prioritized—furthermore, companies test that by using DSA questions. In light of this, I have decided to teach myself DSA from the basics. Here is how I am doing it.
Me vs. Data Structures and Algorithms
My interest in DSA started when I joined a certain boot camp last year. It was mainly about DSA. I had already done a DSA unit at my university, but it was several months earlier. Of course, I had already forgotten many of the concepts.
I relearned the basics at the bootcamp, and then I stopped revising the same, and that's how I almost forgot everything again. After doing some research, I realized that developers who are good with DSA regularly practice.
They don't just learn DSA and move on to other things, then come later and still remember everything. Well, this is no surprise, it applies to pretty much everything. To apply the same I'm using so-called spaced repetition, where you repeatedly study difficult concepts until they stick.
How I'm Studying Data Structures and Algorithms
Here are my approach to learning DSA:
- Setting aside an hour a day
Usually, I study DSA first thing in the morning (after breakfast and the usual preparations, of course).
- Reviewing what I learned yesterday first thing in the morning
Every day, I start my day by reviewing what I learned yesterday. If I tackled a problem, I'd try to remember how I solved it and write down my solution on paper. If I didn't solve the problem and looked up the answer, I'll still try to tackle the problem again individually to see if I understood the concept. This process might take a few minutes, or worse, the entire hour!
- Spaced repetition
After a few days, I'll review a concept I learned or a problem I tackled to refresh my memory.
So far, I'm pretty happy with the results. I'm finally getting the hang of solving DSA-related problems.
Resources
Here is a list of resources I'm currently using:
Cracking The Coding Interview by Gayle Laakmann McDowell - This book has a large section dedicated to Big O. Also, it goes further to teach about different Data Structures that you'll find in interviews.
JavaScript Algorithms playlist - Codevolution/YouTube
JavaScript Data Structures playlist - Codevolution/YouTube
Neetcode - A structured way for tackling essential Leetcode questions (with video solutions (in Python) and code written in several programming languages like JavaScript, Java, Python, and C++)
Notice a typo, error, or additional information worth sharing? Comment below. I'd love to hear your feedback.