This is part eight of my favorite programming, mathematics, physics, and science books.

Quick intro for anyone joining – I've been collecting interesting books for more than 15 years. I'm interested only in books that change thinking and challenge what I already know. I also like fun books that teach you something new in a unique way and books that focus deeply on one topic and one topic only. I hate average books and don't recommend such books. My recommendations have no affiliate links or other garbage. Just awesome books that I truly enjoy.

Previous parts: part one, part two, part three, part four, part five, part six and part seven.

This time, I'm sharing my favorite books about mathematics, history of science, and programming. Here they are!

## 36. Counterexamples in Analysis

The best part of mathematics is counterexamples. You can learn things by examples but you'll jump in excitement when you see a counterexample. It will break your understanding of things and teach you something completely new about something you thought you knew. You'll be scratching your head and saying wow. It has happened to me so many times. I was thinking I knew something and then suddenly a punch in the face by a counterexample.

This book contains several hundred elegant counterexamples, most of which you haven't seen or thought about.

- A nowhere continuous function whose absolute value is everywhere continuous.
- A function that is everywhere continuous and nowhere differentiable.
- A continuous function that is nowhere monotonic.
- A function that is not a derivative.
- Bounded divergent sequences.
- Series for which the ratio and root tests fail.
- Series for which the root test succeeds and the ratio test fails.
- A discontinuous function of two variables that is continuous in each variable separately.
- Two monotonic functions whose sum is not monotonic.
- Two periodic functions whose sum is not periodic.
- And many more.

I love counterexamples so much. I keep returning to this book. I often open random pages and just try to understand what is happening. Usually, I have no clue as I only know basic calculus but it's still fun.

Here's also a nice quote from the book:

Mathematical questions resolved by a counterexample has the pungency of good drama. Many of the most elegant and artistic contributions to mathematics belong to this genre.

I only know three books that focus a lot on counterexamples. This one, then Quantum Paradoxes that I already mentioned in Part 5, and in one of the next parts, I'll show you one more counterexamples book.

Authors: Bernard R. Gelbaum and John M. H. Olmsted.

## 37. Ruminations on C++: A Decade of Programming Insight and Experience

I loved C++ before it became an esoteric Turing tarpit language and this is one of many books that I used to learn programming in C++ (and programming in general). It teaches how to write classic C++ and how to become a successful programmer.

Also, Andrew Koenig is another of my favorite computer scientists and writers. If you've programmed any serious C++, then you'll remember Koenig lookup (also known as argument-dependent lookup or ADL). He's also the author of C Traps and Pitfalls, another of my favorite books.

Author: Andrew Koenig and Barbara Moo.

## 38. Oliver Heaviside: The Life, Work, and Times of an Electrical Genius of the Victorian Age

Amazing book. It takes you through a journey of a scientist you probably haven't heard of. Heaviside invented modern vector calculus and rewrote Maxwell's equations from a very complicated form to modern calculus form. Maxwell had 20 equations and Heaviside simplified them to the 4 elegant equations that we know today. The book has hundreds of pictures and footnotes.

## 39. Heard on the Street: Quantitative Questions from Wall Street Job Interviews

Math puzzles all the way down. This book contains questions collected from actual job interviews in investment banking, investment management, and options trading. These same questions are nowadays also used in programming interviews. The first part of the book is questions with some hints and tips, and the second part is detailed answers. I can't solve most of them but some day I'd love to.

Author: Timothy F. Crack.

## 40. The Pragmatic Programmer: From Journeyman to Master

Another older book that hasn't lost value. It's a joy to read it to remind yourself how to write good code and create successful projects.

Use text files. Learn shell. Write simple code. Use good variable names. Don't repeat yourself. Refactor early and often. Evolve code into what it needs to be. Delight your users.

As I was writing this post, the second edition (20th anniversary edition) was released. Both editions are great and timeless. Get either one.

Author: Andrew Hunt and David Thomas.

Have fun and see you in part nine!