Data Structures and Algorithms with Python
Abstract
Thanks for choosing Data Structures and Algorithms with Python. This text was
written based on classroom notes for two courses, an introductory data structures
and algorithms course and an advanced data structures and algorithms course. The
material contained in this text can be taught in two semesters. The early chapters in
this text are intended as an introductory text for data structures and algorithms,
while the later chapters cover advanced topics that are suitable for the second course
in data structures and algorithms. The Python language is used throughout the text
and some familiarity with Python or some other object-oriented language is
assumed. However, the first chapter contains a Python primer for those coming
from a different language background.
This text serves well as a follow-on text to Python Programming Fundamentals
by Kent D. Lee and published by Springer, but does not require you to have read
that text. In this text the next steps are taken to teach you how to handle large
amounts of data efficiently. A number of algorithms are introduced and the need for
them is motivated through examples that bring meaning to the problems we face as
computer programmers. An algorithm is a well-defined procedure for accomplishing
a task. Algorithms are an important part of Computer Science and this text
explores many algorithms to give you the background you need when writing
programs of your own. The goal is that having seen some of the sorts of algorithms
presented in this text, you will be able to apply these techniques to other programs
you write in the future.
Another goal of this text is to introduce you to the idea of computational
complexity. While there are many unique and interesting algorithms that we could
explore, it is important to understand that some algorithms are more efficient than
others. While computers are very good at doing calculations quickly, an inefficient
algorithm can make the fastest computer seem very slow or even make it appear to
come to a halt. This text will show you what can and cannot be computed efficiently.
The text builds this idea of efficiency from the most basic of facts giving
you the tools you will need to determine just how efficient any algorithm is so you
can make informed judgements about the programs you write.