Self studying can be difficult and intimidating. If you want to learn data structures and algorithms but are stuck on how to begin, then keep reading!
Though there are many paid courses available to you that can fast track your learning, in this post I'll be talking about how you can make the best out of the free resources out there and how you can use them to build a self paced curriculum for yourself.
Step 1: Create A Study Plan
If your goal is to learn data structures and algorithms (DSA) for interviews, then Coding Interview University is the best place to get started. It is a complete computer science study plan to not only learn data structures but a comprehensive guide on how to become a software engineer.
It contains a list of topics to study and resources to use. You can use the exact list or pick and choose the topics that are suitable for your goals.
You can also check out this post on Leetcode for a comprehensive DSA guide.
You can also use ChatGPT to make a study plan for you ;)
I'll suggest creating a checklist to maintain a record of your progress and to stay motivated. Add strict goals based on your time availabilities and stay consistent!
You can also buy my 90 days Data Structures & Algorithms study plan template on Notion for just $2.41. It has a collection of resources to study from and practice with along with a daily progress tracker.
Step 2: Collect Resources For Studying
If you don't wish to create a curriculum from scratch, you can do a self paced (and free) course on Coursera.
UC San Diego has a DSA specialisation that you can audit for free. Other great websites offering great courses are Udemy, Udacity and EdX. You can go ahead and pick a course that you like and trust.
However, I'd advise to study using a combination of resources so that you have a more complete understanding of the topics. This is where the checklist that you created in step one comes handy. Approach the topics one by one, learning and practicing each until you feel confident before moving to the next one.
YouTube has a plethora of tutorials available for these topics, some of my favorites are:
- MyCodeSchool's Time Complexity Playlist
- HackerRanks's DSA Playlist
- CSDojo's DSA Playlist
- Michael Sambol's YouTube Channel
- Google's Tech Dev Guide
If you prefer text-based learning, here are my go-tos:
- GeeksForGeeks
- Scaler Topics
- Introduction to Algorithms, book by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
- CP Algorithms
Step 3: Learn, Practice, Revise
Just reading books/blogs or watching tutorials is not enough. You must practice each and every data structure and algorithm that you learn.
Start by writing code for the actual implementation of the topic. Once you know the topic well, move on to using them for problem solving to actually cement that knowledge.
Here are some free platforms where you can practice your skills-
You can filter questions based on the topics and the level of difficulty.
Here are some notes that you can use to revise your knowledge at periodic intervals.
Step 4: Be Consistent
The consistent efforts that you'll put every single day is what will matter the most in this journey. Here are some tips on how to be consistent in learning DSA:
Set a specific goal: Set a specific goal for what you want to learn and achieve. Having a clear goal will help you stay focused and motivated.
Create a study plan: Create a study plan that works for you. It could be a daily or weekly routine where you allocate a fixed amount of time to learn and practice data structures and algorithms.
Practice regularly: Consistent practice is key to learning data structures and algorithms. Practice coding problems regularly to reinforce your understanding of the concepts.
Learn from various sources: Learn from a variety of sources such as textbooks, online tutorials, or coding bootcamps. It will help you get a better understanding of the concept from different perspectives.
Collaborate with others: Collaborate with others who are also learning data structures and algorithms. Discussing problems and solutions with peers can help you gain new insights and perspectives.
Stay motivated: Stay motivated by reminding yourself why you started learning data structures and algorithms. Celebrate your achievements and progress, and don't get discouraged by setbacks.
Lastly, remember that slow progress is still progress! Goodluck :D