Algorithms as a whole do not just pertain to the field of computer science even though they are commonly used.
Biologists, economists, etc. use them everyday.
Algorithms are not just restricted to the ones that we will learn in this class (ie. well-known, long-standing, clearly defined algorithms). Often times they will be these “popular” algorithms but will be tweaked, mutated, and made to conform to the unique requirements that each use has.
Algorithms should be an idea through which you look to solve problems.
Due to the often messy nature of applying algorithms, there are two components of them that we can define:
The clean mathematical core of the problem (ie. cookie-cutter algorithm that is well-defined).
The task of applying the appropriate design techniques of algorithms based on the specific problem.
Algorithms shouldn't just solve a problem but should also in doing so, define the underlying questions in it.
Goal of the book:
Learn how to approach algorithms as a design process, by first understanding the algorithmic design techniques and then by learning which efficient algorithms to apply.