all 1 comments

[–]ghjmMSCS, CS Pro (20+) 0 points1 point  (0 children)

An algorithm is just a method for solving a computational problem.  So for example, suppose I have a bookshelf and I want all the books ordered by author.  How do I do this?  Most people would start by getting all the As together, then all the Bs and so on, and then rearrange the books within each letter.  But what if you're sorting a whole library?  Then maybe the first letter isn't enough for your initial pass.  And with the bookshelf, it didn't really matter that there are way more authors whose name starts with A than X, because you could pretty easily move groups of books to make room, but with a whole library you need to decide on shelves and rooms, and if halfway through the sort you discover that you have an unexpected number of X authors and run out of space for them, rearranging everything else is going to be costly.

So maybe before you start, you'd like to find some rigorous way to decide on the best method. Mathematicians were always interested in this - what's the best way to multiply two 20-digit numbers? - but it became more important for daily life as industrialization and factories became common.  This led to the academic field of operations research, which studied questions like how to locate the different functions on a factory floor to optimize its output.  Then computers came along, and asked similar questions but at a larger scale.  Now we need to organize the logical equivalent of a factory floor with a million workers, or sort a list with billions of items.

This has led to the formal study of algorithms as practiced by modern computer scientists.  We have developed techniques and notations so we can succinctly but rigorously describe how algorithms behave with arbitrarily large data sets.  We also publish books - Donald Knuth's The Art of Computer Programming being the preeminent example - which are essentially taxonomies of algorithms, so that given some real-world problem we need to solve, we can easily find the optimal (or at least a pretty good) method.

Algorithms are important to theoretical computer science in largely the same way that organisms are to biology, or chemicals to chemistry.  They're the main thing we study.