This infographic sets out to show the impact programming has had. It is indisputable that software has touched most things in the modern world, but you might still be surprised by the selection of algorithms in this chart.
This infographic, prepared by College Degree Search, is clearly designed to generate some enthusiasm among students for studying the most important subject of all - programming. However, it does raise some interesting questions about what exactly and algorithm is.
The definition it provides is
An algorithm is a set of instructions for solving a problem or performing a task.
and while this is true doesn't this apply at a mathematical formula as well? Isn't the traditional well known formula for the roots of a quadratic equation an algorithm by this definition?
Yes of course it is!
The point is that programming is mathematics without the abbreviated symbols - but don't tell the students this because it might just put them off.
Take a look at the infographic - be warned it is big and deserves to be printed out and put on a wall somewhere - and see what you think about the choice of algorithms.
You can get an even higher resolution version from: College Degree Search.
While the first example, the Euclidean algorithm, seems fine as an algorithm, the second, the quadratic algorithm, doesn't seem quite as good. Programming and algorithms that belong more to programming than math have the property that they use iteration and conditional logic in a way that math formulas usually don't. While the Euclidean algorithm does include iteration the quadratic algorithm doesn't.
You can pick and choose which algorithms you think belong to programming and which to math. Personally I'm pleased to see the Fast Fourier Transform in the list. It is difficult to appreciate how much change this improvement from an order N2 to an order NlogN algorithm brought about. It probably deserves the accolade of algorithm of the century - but that would be 20th not 21st.
In this context, I suppose what really matters is choosing the algorithms that would impress a potential student to take up the challenge of implementing and creating new algorithms.
So what would you pick to be the poster child for programming? Please let us know using the Comments.