Concrete mathematics (not only) for computer scientists. With many graphics and algorithms in Python. (Konkrete Mathematik (nicht nur) für Informatiker. Mit vielen Grafiken und Algorithmen in Python. Mit Illustrationen von Heike Stephan.) (German) Zbl 1405.00002

Wiesbaden: Springer Spektrum (ISBN 978-3-658-21564-4/hbk; 978-3-658-21565-1/ebook). xiii, 942 p. (2018).
This textbook covers the material necessary for a four semester mathematics course for students of computer science. But the idea of this book is quite unusual because it is at the same time a profound introduction into the programming language Python, including the SymPy library for computer algebra, which is used throughout the book to investigate and experiment with mathematical concepts, give examples and demonstrations, and even suggest programming projects. To this end installation instructions are given in an appendix, and the author provides some simple but useful libraries. The exposition of the mathematical material does not follow the classical definition – theorem – proof approach but introduces new concepts by examples and replaces formal proofs mostly by informal but complete reasoning using carefully chosen examples, so mathematical rigor is preserved. New notations and terms are explained very detailed. Nevertheless there are many references to results from higher mathematics and open questions, especially within the many links to videos, which cover records of all the authors lectures as well as further material. An integral part of the exposition are about 1000 exercises, for most of them solutions, some quite elaborate, are provided online. A nice feature are the many fine graphics (and especially the many portraits of mathematicians by Heike Stephan). How to generate these graphics is also part of the Python introduction.
The list of topics comprises numbers and combinatorics – including computer internal representation of numbers and arising problems, set theory, linear algebra – including classical geometry, analytical and projective geometry, calculus, Fourier analysis and transforms and differential equations, finite fields – with applications in error recognition, probability and statistics, roughly in this sequence. Roughly, because the book is not formally divided into parts covering the different mathematical realms, but the about 70 chapters develop the material from the simple to the complex thereby picking up topics again whenever convenient. In this way the author conveys a strong feeling for innermathematical connections. There are many digressions, which are not indispensable, i.e. Dedekind cuts, uncountability of the real numbers, the history of complex numbers, streaming algorithms for calculating digits of \(\pi\), or Mandelbrot’s set. Obviously the author not only wants to equip his students with the necessary mathematical knowledge but to illustrate the beauty and satisfaction mathematics can provide. Of course whenever possible applications to real life problems are given.
The choice of topics is presumably suitable for readers of other subject areas too, notably because prerequisites comprise little more than basic arithmetics.


00A06 Mathematics for nonmathematicians (engineering, social sciences, etc.)
68-01 Introductory exposition (textbooks, tutorial papers, etc.) pertaining to computer science
68N15 Theory of programming languages
Full Text: DOI