|
|
This book is about data structures and algorithms, intermediate
programming in Python, computational modeling and
the philosophy of science: - Data structures and algorithms:
- A data structure is a
collection of data elements organized in a way that supports
particular operations. For example, a Python dictionary organizes
key-value pairs in a way that provides fast mapping from keys to
values, but mapping from values to keys is slower.
An algorithm is a mechanical process for performing a computation.
Designing efficient programs often involves the co-evolution of data
structures and the algorithms that use them. For example, in the
first few chapters I will present graphs, data structures that
implement graphs, and graph algorithms based on those data structures.
- Python programming:
- This book picks up where Think Python
leaves off. I assume that you have read that book or have
equivalent knowledge of Python. I try to emphasize fundamental ideas
that apply to programming in many languages, but along the way you
will learn some useful features that are specific to Python.
- Computational modeling:
- A model of a system is a simplified
description of a system used for simulation or analysis.
Computational models are designed to take advantage of cheap, fast
computation.
- Philosophy of science:
- The models and results in this book
raise questions relevant to the philosophy of science,
including the nature of scientific laws, theory choice, realism and
instrumentalism, holism and reductionism, and epistemology.
There are two kinds of computational models: - Continuous:
- Many computational models compute approximate
solutions to equations that are continuous in space and time. For
example, to compute the trajectory of a planet, you could describe
planetary motion using differential equations and then compute the
position of the planet at discrete points in time.
The fields of numerical methods and scientific computing
tend to focus on these kinds of models.
- Discrete:
- Discrete models include graphs, cellular automata,
and agent-based models. They are often characterized by structure,
rules and transitions rather than by equations. They tend to be
more abstract than continuous models; in some cases there is no
direct correspondence between the model and a physical system.
Complexity science is an interdisciplinary field—at the intersection
of mathematics, computer science and natural science—that focuses on
discrete models of physical systems.
And that’s what this book is about. Allen B. Downey
Needham MA
Allen Downey is a Professor of Computer Science at
the Franklin W. Olin College of Engineering. Contributor List
If you have a suggestion or correction, please send email to
downey@greenteapress.com. If I make a change based on your
feedback, I will add you to the contributor list
(unless you ask to be omitted).
If you include at least part of the sentence the
error appears in, that makes it easy for me to search. Page and
section numbers are fine, too, but not quite as easy to work with.
Thanks! - Richard Hollands pointed out several typos.
- John Harley, Jeff Stanton, Colden Rouleau and
Keerthik Omanakuttan are Computational Modeling students who
pointed out typos.
- Muhammad Najmi bin Ahmad Zabidi caught some typos.
- Phillip Loh, Corey Dolphin, Noam Rubin and Julian Ceipek
found typos and made helpful suggestions.
- Jose Oscar Mur-Miranda found several typos.
|
Like this book?
Are you using one of our books in a class? We'd like to know
about it. Please consider filling out this short survey.
|