An algorithm is a specific procedure for solving a well-defined computational problem. The development and analysis of algorithms is fundamental. For questions or problems with only a finite set of cases or values an algorithm always exists (at least in principle); it consists of a table of values of the answers.