Every applications out there in the market are using algorithms either directly or indirectly. According to the popular algorithms textbook Introduction to Algorithms (by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein), “An algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values as output.” Algorithms help in developing a systematic thought process to solve problem faced by the people in day to day life activities.
We will discuss algorithms which have a great practical implications. Here we will try to implement algorithms in depth instead of just understanding approach. So that all the concerns and issues of the engineers are addressed. So to begin with, we will start with what and why!
What is Algorithm?
Solving a problem by a finite sequence of instructions or you can say its a set of steps to accomplish a task. Its as simple as that!
If you want to build an application on your own and publish it on to the market, you for sure want it to be faster, efficient and highly available such that end user are happy using it. Then you don’t just want to provide a set of pages and buttons for the user to use it. You should build the core of your application to perform in an very efficient way. That’s where algorithms comes into picture, appropriate algorithms makes your application highly efficient. Lets take an example to explain why algorithms are so important for every programmers to make use of.
Lets assume you are building a online store where users can buy products such as Flipkart, Amazon etc,. If users search for a particular product with a set of filters then they expect the results to be displayed immediately right! you can not let user wait for minutes for an application to search millions of products in their database. If you do so then users will be like
Similarly if you are building an web portal where user can use it to plan a trips by mentioning all there needs, then your application should provide the best route possible. You can do it using algorithms to find the shortest or the best path to travel from one location to another.
So if you are building such a large application where user base is very high and you have millions of records of information, i too agree that you need to understand few key fundamental concepts while designing such as,
- Vertical/Horizontal scaling of your application
- Load balancing to address millions of request per second.
- Database partitioning and replication criteria
- Caching mechanism etc etc,.
But while implementing these concepts, you should know which algorithm should be used right?!
For implementing caching mechanism, you should chose caching algorithms based on your requirement such as
Least Frequently Used (LFU) or Least Recently Used (LRU) orAdaptive Replacement Cache (ARC) or Most Recently Used (MRU)
I can give you numerous such examples where algorithms are used and very much required for every applications to be highly efficient, So guys if you want to build up your own application, as a software developer don’t just try to learn the programming languages which are required to built it, learn how best you can implement those applications using the algorithms, because those languages can be learnt in no time by anyone, but understanding how efficiently you can build applications using algorithm is a unique talent.
You can find tons of resources in many websites such as GeeksForGeeks, Hackerrank, HackerEarth, InterviewBit, and so on. Along with perfecting yourself in programming with data structures and domain specific languages, try to learn Algorithms as well.
So in this blog i will be posting some of the new algorithms which i will be learning or at least the new ways of implementing them. Following are some of the posts which you can start.