====== Preface ====== * 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.