When it comes to algorithms, it always remind me of the Gauss’ solution to summarise the numbers from one to a hundred which I learned in primary school. Perhaps it is the first algorithm that I have learned. Whereas, I didn’t completely recognised the importance of his solution until I become a programmer. In a word, the time complexity of Gauss’ solution is $O(1)$ while the normal solution is $O(n)$. If I write programme to implement the former one, only one line of code is enough, but I have to write a for loop for the later one. Apparently, his solution is far more effective than the normal one especially when dealing with large amount of data. When I was learning data structure and algorithms, what I learned from Gauss helped understand what exactly the algorithm is and why I should learn it.

The word “algorithm”, which is difficult to spell, intimidated me when I know it at the first time. I thought it must be some complicated mathematical methods for experts. Is it? It is definitely not for the elitist mathematicians or programmers. It is just a solution as very same as Gauss’ to solve another problem. There are algorithms everywhere in our daily life not only in developer’s world. For example, stall holders calculate the price of goods in a way that decomposing fractional numbers into integers when multiplying them. $10.5\times3$ can be decomposed to $10\times3+0.5\times3$. This is a kind of algorithm that could help them make deal without a calculator.

After knowing about what algorithm is, it is obvious that why it is critically important for software engineers to learn it. It is not a programming tricks to astound your friends or managers but a practical approaches to save consumption of time and footage of disks. As a software engineer, we will have to deal with large amount of data or show the information as soon as possible. That is where we need algorithms. Algorithm is arguably the fundamental of programming.

In conclusion, it is necessary to learn data structure and algorithms for its significant benefits for robust and effective programme. To be an exceptional programmer needs to be able to master widely used algorithms and write code with them.

P.S. My repository. for data structure and algorithm. It seems that the “LaTex” expressions are not shown properly. I will find the solution later.