Overview
In Chapter 1 we introduce some fundamental algorithms that date back centuries, but which
still have an important role to play in today’s modern computing environment. These
examples are intended to give the student a glimpse of the history of the study of algorithms,
and at the same time to make the important observation that the most straightforward algorithm
for a given problem is often not the most efficient. We consider the problems of computing
powers, finding the gcd of two integers, computing square roots and, more generally, zeros of
Chapter Objectives
After completing the chapter, the student will know:
• Some of the historical basis for the study of algorithms
• The importance of analyzing the performance of a given algorithm
• The importance of not necessarily settling for the most straightforward solution to a
problem
• The efficient solutions to some fundamental computational problems, which have a long
history and have applications to modern day disciplines
• The necessity to design algorithms that exploit the emergence of new computing paradigms
such as parallel and distributed computational environments
Instructor Notes
While an instructor might decide to make all or part of Chapter 1 as a reading assignment
(depending on the student’s background), it is important to note that the examples introduced
should be part of the student’s toolkit, since they frequently occur in design of many algorithms
used in science, engineering and business applications.
The complexity (computing time) of an algorithm is formally defined in Chapter 2.