So what is an algorithm anyways?
Basically
it's a set of well defined rules, a recipe in effect for solving some
computational problem. Maybe you have a bunch of numbers and you
want to rearrange them so that they're in sorted order. Maybe you have a
roadmap and an origin and a destination and you want to compute the
shortest path from that origin to that destination. May be you face a
number of different tasks that need to be completed by certain deadlines
and you want to know in what order you should accomplish the
task. So that you complete them all by their respective
deadlines.
So why study algorithms?
Well first
of all, understanding the basics of algorithms and the related field of
data structures is essential for doing serious work in pretty much any
branch of computer science. To give you a few examples, routing
and communication networks piggybacks on classical shortest path
algorithms. The effectiveness of public key cryptography relies on
that of number-theoretic algorithms. Computer graphics needs the
computational primitives supplied by geometric
algorithms. Database indices rely on balanced search tree data
structures. Computational biology uses dynamic programming
algorithms to measure genome similarity. And the list goes on.
Second, algorithms play a key role in modern
technological innovation. To give just one obvious example, search
engines use a tapestry of algorithms to efficiently compute the relevance
of various webpages to it's given search query. The most famous such
algorithm is the page rank algorithm currently in use by
Google.
Indeed in a December 2010 report to the United
States White House, the President's council of advisers on science and
technology argued that in many areas performance gains due to improvements
in algorithms have vastly exceeded the dramatic performance gains due to
increased processor speeds.
Applications
of Algorithms
Algorithms are increasingly being used to provide a
novel lens on processes outside of computer science and technology. For
example, the study of quantum computation has provided a new Computational
viewpoint on quantum mechanics. Price fluctuations in economic
markets can be fruitfully viewed as an algorithmic process and even
evolution can be usefully thought of as a surprisingly effect search algorithm. The
last two reasons for studying algorithms might sound flippant but
both have more than a grain of truth to them. I don't know about you, but my
favourite classes were always the challenging ones that, after I struggled
through them, left me feeling a few IQ points smarter than when
I started. It's an endeavour that requires a rare blend of
precision and creativity. It can certainly be frustrating at times, but
it's also highly addictive. So let's descend from these lofty generalities
and get much more concrete. And let's remember that we've all been learning
about and using algorithms since we were little kids.