Data Structure and Algorithms : Becoming expert in Data structure and algorithms is the dream of every developer.
Data structure and Algorithms are always one of core technical things that are required to move ahead in your career. From the time of 3rd semester placement till 18–20 years experience in the tech industry you always stuck with some form of data structure and algorithms. As shown below in chart, on an average interview these will pattern mostly seen in interview
The Internet is full of courses in data structure and algorithms, out of which sometimes it’s very difficult to figure it out which one is better. Thanks to Google Review, we can figure out content quality reviews online.
Also Read Hacker Rank vs Leet Code
I advise you to follow the following best practice:
- educate yourself about data structures
- educate yourself about algorithms
- create a project and apply your learnings with practices in your programming language of choice
- refactor the codes, time to time, with new findings
- refactor the existing codes from other projects with the findings you have about different algorithms and data structures.
Then for each step:
Step 1: educate yourself about Data Structure and Algorithms
- Review reference books and online resources
- Make a list of different data structures(numerics, strings, dictionary, hashtag, etc) and for each item, try to run an example.
- find problems which could be written using different data structures and try to use different data structures there
Step 2: educate yourself about Data Structure and Algorithms
- Review reference books and online resources
- Make a list of different algorithms categories(search, sort, …) and for each item of each category, try to run an existing example.
- try to rewrite the examples by yourself
- find problems which could be written using different algorithms(e.g sort) and then compare them.
Step 3: create a project and apply your learnings with practices in your programming language of choice
- put all the examples you found online from the previous steps in this project
- put all the codes you wrote in previous steps in this project
- organize the project and define some structure for it
- document the codes, if necessary, for your future references
Step 4: refactor the codes, time to time, with new findings
- apply the new findings into your codebase and document it
- try to understand how new refactorings and findings affect the code(complexity, memory allocation, execution time, …)
Step 5: refactor the existing codes from other projects with the findings you have about different Data Structure and Algorithms
- apply your knowledge to real world programs
- try to understand how the changes you make to the code affects it(complexity, memory allocation, execution time, …)
- draw conclusions about the changes(if they were useful, if they made code cleaner and more readable, …)
The Efficient Way of learning Data Structure and Algorithms depends on many factors which are listed below:
- Your prior knowledge of programming languages and basic DS and Algos.
- The purpose for which you want to learn it.
- The resources available to you.
- A perfect guidance towards this path.
Also Read Best Jobs in Australia
Basic Knowledge Required for becoming an expert in Data Structure and Algorithms
- Arrays, linked lists, queues, stacks
- Linear search, binary search, bubble sort, insertion sort, selection sort
- At this time, I would recommend understanding the concept of space and time complexity.
- Merge sort, quicksort, counting sort, radix sort
- Moving on to trees (intro), binary search trees, balanced binary search trees
- Heaps, heapsort
- Amortized analysis
- Disjoint set (Union- find)
- Graphs, BFS, DFS
- Dijkstra, bellman ford, prims’s algorithm, Kruskal’s algorithm
- Dynamic programming: Intro and the 5–10 classic problems in DP.
- Floyd’s and Warshall’s algorithm
- Randomized algorithms
- Complexity theory introduction: P, NP, NP-hard problems
- Approximation algorithms
- String matching algorithms: Rabin Karp and KMP
- Convex hull, line-sweep technique
- Range trees, Segment trees
There’s a lot more. If you are interested in competitive programming then this is a great source for Data Structure and Algorithms.
Now you are talking about mastering these algorithms and data structures. Just studying them and even implementing them is not enough for that. I think mastering means that you must be able to modify the data structure or algorithm as per your needs and most importantly you must be able to solve problems with your knowledge.
good source to learn data structures and algorithms
Course Pause Feature – Another Great feature and unique , that helped me a lot. It was course deadline pause feature , while there were exams or some important work , i stopped the course deadline . It had total 15 days. You can simply pause the time in course for total of 15 days which was just awesome .
TA and Mentor Support – Available almost whole day
There were TA( Teaching assistant ) , that are good in the respective field , who are always there to help you for any query be it basic one or hard one . You can just post your doubt on the Doubt Board and get it solved or understood by the TA .
Not only this you have mentor support too if you need sometime .In my batch there was Ravi , he was too good , he never refused to solve a problem and was a good person. With the help of these things i.e the TA support and course content , what else is needed now ?? You are ready for an internship or a job now ! . Don’t believe me ? Lets read the next point then !
Placement Cell – Internship and jobs opportunities after course completion
As the name suggest , a placement cell , which will help you get placed in a good company or score an internship . Its been more than a year , but i still receive mails and messages about available jobs and internships.
There is a dedicated cell for the students who do well in their courses and complete the course in time to get good placements.They send emails and notification for new jobs opportunities , like recently there was Nearbuy SDE intern and a lot more like that. Still not placed ? Then there is something more for you , keep reading!
TA internship opportunity If you complete your course in time with good percentage completion you get an opportunity to apply for TA , for upcoming batches . In that you can self learn by solving doubts of others and also may get paid accordingly , Plus a work experience .
Not only this you get 2 certificates of Data Structure and Algorithms if you complete the course more than 90% . Now what else is needed when you are getting so much of things in one single course .
Some may argue that the course is expensive , but always remember see the returns not the cost initially , as Warren Buffet says . This course will return you huge . Not only in placement but it alos improves thinking capability.
Where to find difficult Data Structure and Algorithms problems
If you just want to know the questions and answers for interview questions, the following are some good places to visit. These will be useful in a situation where there is not much time for preparation.
A sub domain of Hackerearth . The website looks clean and seems to have fairly good community.
- I like the algorithms section. (http://www.geeksforgeeks.org/fundamentals-of-algorithms/)
- Apart from that it is more or less similar to careercup.
- Stack overflow questions tagged with algorithms.
Read only the questions.People post shitty brute-force solutions in the comments. It would be a total waste of time to read the answers in the comments.
- Coderust 2.0
More than 2 months for preparation
If you have lot of time for the interview it is better to improve your coding skills, Here are a few useful sites for practicing algorithmic programming.
- HackerRank (previously www.interviewstreet.com )
- No-so-easy questions , most of them are challenging.
- Solving one question requires multiple concepts.
- Companies come for hiring via codesprints in interviewstreet
- Sphere Online Judge (SPOJ)
- Use www.problemclassifier.appspot.com to search for problems of a concept and then solve the questions
- Contains more than 10K questions
- has questions of all levels in Data Structure and Algorithms.
- Contains questions of all levels.
- There will be monthly contests.
- They conduct non-programming contests once a while (may be around 3 months)
- Moderate and difficult questions.
- Very good community.
- High quality tutorials.
- There will around 2 contests per month.
- Contains questions of all levels(archives).
(similar to topcoder for Data Structure and Algorithms)
- Contains many easy questions in the beginning. But the questions after the 200th are challenging.
- One can start with this (questions numbered <100) and move on to other sites once he/she gets confidence.