Вы находитесь на странице: 1из 4

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/325590962

Introduction to Computation and Programming Using Python. Second Edition,


with Application to Understanding Data.

Article  in  SIAM Review · June 2018

CITATIONS READS

0 2,198

1 author:

Dominique Orban
Polytechnique Montréal
74 PUBLICATIONS   1,837 CITATIONS   

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Treatment of Degeneracy in Optimization View project

Large-Scale Optimization View project

All content following this page was uploaded by Dominique Orban on 06 June 2018.

The user has requested enhancement of the downloaded file.


BOOK REVIEWS 483

ilation, Cambridge University Press, tools from other fields, e.g., machine learn-
2015. ing, compressed sensing, and data science,
[6] T. J. Sullivan, Introduction to Uncer- DMD becomes “innovated DMD.” Chapter
Downloaded 06/05/18 to 132.207.4.76. Redistribution subject to SIAM license or copyright; see http://www.siam.org/journals/ojsa.php

tainty Quantification, Springer Texts 5 is inspired by the idea of wavelets and


Appl. Math. 63, Springer, 2015. describes multiresolution DMD (mrDMD),
which targets resolution of multiscale fea-
K. J. H. LAW
tures. In Chapter 8, noise rejection algo-
University of Manchester
rithms specifically designed for DMD of
noisy data sets are reviewed. In Chap-
ter 9, compressed and compressed-sensing
Dynamic Mode Decomposition: Data- DMD are described, which exploit the low-
Driven Modeling of Complex Systems. By dimensional features in the data that can
J. Nathan Kutz, Steven L. Brunton, Bingni W. Brun- be extracted by DMD. The remaining chap-
ton, and Joshua L. Proctor. SIAM, Philadelphia, ters discuss a variety of (mainly diagnostic)
2016. $69.00. xvi+228 pp., softcover. ISBN applications: modal decomposition of fluid
978-1-61197-449-2. https://doi.org/10.1137/1. data (Chapter 2), video background sepa-
9781611974508. ration (Chapter 4), modal decomposition of
epidemiological data (Chapter 11), modal
This book is a timely introduction to and decomposition of neuroscience data (Chap-
exposition of dynamic mode decomposition ter 12), and DMD-based prediction for fi-
(DMD), a data-driven method for the dis- nancial trading (Chapter 13).
covery of (low-dimensional) dynamical sys- Altogether, the book is well structured
tems from high-dimensional data. The book and well written. If the reader is only in-
not only introduces theory, connections, terested in a definition of DMD, there is no
and innovations, but also contains a vari- need to buy this book. However, if one is
ety of realistic examples with accompanying interested in how DMD fits in the broader
MATLAB code. I like that the book brings framework of applied mathematics, or how
many ideas and algorithms together, such as the method can be tailored for specific uses,
Koopman analysis, DMD, and compressed or if one likes to contribute to the exciting
sensing. The chapters in the book are a bal- and ongoing research of system identifica-
anced mixture of fundamental theory and tion for complex nonlinear systems, this
application. For instance, Chapter 1 intro- book is a must-have. The authors have
duces DMD and in Chapter 2 the reader made every effort to present the material in
learns how to dynamically decompose data a succinct and clear manner. I believe this
obtained from the fluid flow around a cir- book will provide many researchers with a
cular cylinder (provided on the book’s web- head start in the field of data-based mod-
site). This structure makes the book ideal eling. Are you DMD-ing yet?
not only for self-learners, but also as a (sup- DIRK M. LUCHTENBURG
plemental) text for a course which involves The Cooper Union for the
data analysis and/or dynamical systems. Advancement of Science and Art
Chapter 1 introduces DMD and sets the
stage for the rest of the book. The definition
of DMD is relatively straightforward. How-
ever, it turns out that DMD is connected Introduction to Computation and Pro-
to the Koopman operator (Chapters 3, 10), gramming Using Python. Second Edition,
which is an infinite-dimensional linear oper- with Application to Understanding Data.
ator that describes how measurements of a By John V. Guttag. MIT Press, Cambridge, MA,
dynamical system evolve through the non- 2016. $45.00. xvi+472 pp., softcover. ISBN
linear dynamics. Moreover, it also is related 978-0-26252-962-4.
to particular system identification methods
(Chapter 6, 7), which identify input-output The Python language has grown increas-
relationships from data. The addition of an ingly popular in science circles for about
explicitly controlled input to DMD is called the past twenty years and has come a long
DMD with control (DMDc). Employing way. Today, a wide range of Python mod-

Copyright © by SIAM. Unauthorized reproduction of this article is prohibited.


484 BOOK REVIEWS

ules for numerical and symbolic compu- sprinkled with brief applications to topics
tations is available, and Python is used that are relevant to the computational sci-
extensively in the high-tech sector, space entist, such as Newton’s method and Fi-
Downloaded 06/05/18 to 132.207.4.76. Redistribution subject to SIAM license or copyright; see http://www.siam.org/journals/ojsa.php

agencies, film industry, education, govern- bonacci numbers. The brief Chapter 7 cov-
ment, and numerous other areas.1 Python ers Python exceptions and assertions, and
ranks first, according to the recent IEEE Chapter 8 covers object orientation, includ-
Spectrum ranking The Top 10 Programming ing classes and inheritance, and gives a brief
Languages,2 among 48 languages using 12 discussion on the concept of generators—
metrics, achieving the top four with the neat abstract objects over which we may
likes of C, C++, and Java. iterate. Books such as this one are precious
Countless online resources about the tools because all too often applied science
marriage of Python and (computational) curriculae merely cover a simple impera-
science at large are available, but rela- tive language without any discussion of how
tively few textbooks exist in comparison classic but powerful object-oriented con-
with other popular languages—those by cepts that computer scientists would take
Langtangen being among the most useful for granted can be useful in computational
so far, in my opinion, though with a def- applications. Overall, the discussion is light
inite scientific computing/numerical anal- but precise, and it is interspersed with anec-
ysis flavor. As a researcher in optimiza- dotes. There are no exercises or problems
tion and a Python programmer, Guttag’s at the end of chapters, but a number of
book struck a chord with me. That may “finger exercises” mixed into the text ask
be because I teach an operations research the reader to expand or improve on a piece
class in which the main concepts revolve of program just discussed. Those finger ex-
around basic complexity theory, some of ercises are doable in a reasonable amount of
the most common difficult problems en- time and allow the reader to deepen their
countered in operations research, and the understanding of both the Python language
Python language—a few of the main top- and the techniques being studied.
ics that Guttag addresses. It is not diffi- Chapter 6, inbetween the core language
cult to find good introductory textbooks and the more advanced constructs, is
about complexity, algorithms, and opera- about testing and debugging. Here, Gut-
tions research—I rely on Introduction to tag chooses to discuss one methodology for
Algorithms by Cormen et al. But pseudo- testing and one for debugging, rather than
code only gets you so far and it is not easy discussing the infrastructure that Python
to find a good reference about Python that makes available for doing so, such as the
combines it well with the theoretical con- unittest and doctest modules and the
cepts. With Guttag’s book, I feel that I standard Python debugger. While I under-
finally have a Python book to recommend stand the logic, I cannot help but feel that
that can be used alongside Introduction to the aversion to debuggers that I observe in
Algorithms. students and colleagues is due to a shortage
Guttag’s book is not aimed at a specific of textbooks or courses explaining how to
audience, but rather at “students with lit- use them effectively.
tle or no prior programming experience who Of course, much more could be said about
have a desire to understand computational Python than what is in the book, but the
approaches to problem solving.” The book reader “with little or no prior programming
begins, as most comparable books do, with experience” will surely be up and running
an introduction to the syntax and seman- after working through the first chapters.
tics of the Python language in Chapters 1 Among the topics that I did not find in
through 5. Guttag uses Python version 3.5, the book are multiple inheritance, deco-
but there are comments throughout the rators, properties, and metaprogramming.
book describing how to accomplish the same Arguably, all are somewhat advanced and
tasks with Python 2.7. The discussion is one might happily never need to use or know

1 https://www.python.org/about/success
2 https://spectrum.ieee.org/computing/software/the-2017-top-programming-languages

Copyright © by SIAM. Unauthorized reproduction of this article is prohibited.


BOOK REVIEWS 485

about metaprogramming outside of decora- introduction to both Python and computa-


tors, but over the years I have found that tion in various areas of applied mathemat-
these topics are sufficiently powerful and ics.
Downloaded 06/05/18 to 132.207.4.76. Redistribution subject to SIAM license or copyright; see http://www.siam.org/journals/ojsa.php

useful that students should at least know DOMINIQUE ORBAN


that they exist. GERAD and École Polytechnique
Besides another brief chapter on plotting, Montréal
the remainder of the book is geared toward
complexity and problem solving. The very
basics of complexity theory are covered in Computational and Statistical Methods
about 15 pages, but this could be easily for Analysing Big Data with Applications.
supplemented by a more thorough discus- By Shen Liu, James McGree, Zongyuan Ge, and
sion from Introduction to Algorithms or any Yang Xie. Academic Press, Amsterdam, 2015.
other book on algorithms. $99.95. viii+194 pp., hardcover. ISBN 978-0-
Applications range from the classic sort- 12-803732-4.
ing methods to graph optimization algo-
rithms, dynamic programming, statistics, Background. This book seemed quite ap-
and probability distributions. The book’s pealing to me just on reading its title.
subtitle, with Applications to Understanding There is considerable hype associated with
Data, is reflected in Chapters 14 through almost all words in that title, but given
24, where various subjects that could be today’s research, application, and business
generally labeled statistics appear: Monte landscape, the hype is well motivated. I am
Carlo simulation, confidence intervals, lin- also interested in the topic of the book since
ear and nonlinear regression, hypothesis I have a research background in algorithms
testing, clustering, and classification. In for large scale computations. In addition,
those chapters, computation is employed I teach introductory and advanced level
as an exploratory tool to navigate through mathematics courses at Linköping Univer-
data. While examining those topics, more sity. Most of my students are master of
features of the Python language are in- science in engineering students enrolled in
troduced as appropriate. Thus, a reader academic programs with titles like Com-
already familiar with the basics of the lan- munication and Transportation Engineering
guage could easily skip the first eight chap- and Media Technology and Engineering. A
ters, dive into problem-solving applications, quick look at the content and application
and at the same time learn new language areas covered in the book showed a good
constructs and features. The exploration overlap with the main themes in the two
of each topic consists of a narrative that programs. Thus, one of the aspects I had
describes a problem and a fair amount of in mind was to find out if this book might
code samples and their results, all of which be (entirely or maybe partially) suitable as
are available online. a course literature for my students.
There is probably too much material in
the book for a one-semester course. A first Book Contents. It is just short of 200
course might, for example, cover most of pages, but it still describes a large and
the basics of Python along with an intro- diverse number of methods for analyzing
duction to complexity and applications to data from various applications. It also con-
dynamic programming, random walks, and tains a number of examples that present
data visualization. A second course might the results of using the presented methods.
focus on more advanced aspects of the lan- Often, the examples are accompanied with
guage and explore optimization, statistics, actual implementation codes. Each chapter
and machine learning subjects. ends with a sufficient list of references.
Again, much more could be said about
the mathematical topics but at around 430 • The first part of the book covers
pages, Guttag’s Introduction to Computa- methods for classification, where the
tion and Programming Using Python is a authors present five commonly used
captivating and instructive read that deliv- classifiers. These are the k-nearest
ers exactly what the title promises: a solid neighbor algorithm, regression mod-

Copyright © by SIAM. Unauthorized reproduction of this article is prohibited.


View publication stats

Вам также может понравиться