Tuesday, June 9, 2015

Eight Books on Math and Computer Science

A friend recently emailed me asking for titles of books I'd recommend to read over the summer, particularly to prepare for computer science and mathematics.  I've adapted my suggestions into this post.  I'd like to note that I've restricted my responses to "non-textbooks;" otherwise, I'd have several more additions that would increase the average page count and price quite drastically.  As such, these books don't have problems to work or present an extreme level of detail, but in many cases they present enough information to provide a strong foundation and context for math and CS classes.

From Mathematics to Generic Programming
Alexander Stepanov and Daniel Rose (on Amazon)

I will most likely write a separate blog post about this book.  I read it during the end of the fall semester and found that it presented a very interesting approach to designing reusable code by utilizing principles from abstract algebra.  It's written to be accessible by someone who hasn't studied abstract algebra yet, which means it also can serve as an introduction to that subject.


CODE: The Hidden Language of Computer Hardware and Software
Charles Petzold (on Amazon)

Four years ago, I wrote a review of this book on RoboDesigners.  At that time, my perspective was that of a high school student and I thought the book was interesting; with the additional perspective of a year of college study in Computer Science, I cannot recommend this book highly enough.

By "building" a computer piece-by-piece from the idea of a relay through developing a simple assembly language, it covers nearly all of the material as the Digital Logic Design course I took, but in an easy-to-read book.  If you comprehend the material in this book, you will be able to coast through DLD.

A Mathematician's Apology
G. H. Hardy (on Amazon) 

When a mathematician with Hardy's stature writes a book on why he studies math, it's probably advisable to read it!  Multiple professors of mine have said it's a book any mathematician should read and I wholeheartedly agree.  It's really short (the printing I've linked above is only 154 pages), but the content is amazing.  Hardy addresses the complaints many have with pure math and embodies the spirit of "doing mathematics for mathematics' sake."  If you are thinking about pursuing a theoretical route in either CS or math, I highly recommend you read this book.

The Code Book
Simon Singh (on Amazon)

I love codes--anything resembling secret or hidden knowledge has a particular allure.  Singh does a great job discussing the past, present, and likely future of codes, ciphers, and cryptography in this book.  Starting with Caesar Shift (what good historic code book doesn't?) and traveling through centuries to discuss the Vigenère cipher, RSA encryption, and the general idea of quantum cryptography, this book gave me a broad understanding of where we are at now with codes and how we got here.  It also includes the clearest description of the actual flaws in Enigma that I've ever read.

In Pursuit of the Unknown: 17 Equations that Changed the World
Ian Stewart (on Amazon)

Every equation has a story--how was this truth discovered, who discovered it, and what exists now because of it?  This book examines 17 equations and their impact on society.  If you're actually reading this blog, the early chapters will probably be old hat, but after (and including) Chapter 4 the content becomes quite interesting. 

Reading Chapter 4 helped me visualize vector fields for Vector Calculus and Differential Equations in the context of planetary movement (and it finally made me understand the age-old analogy for dense objects warping the fabric of spacetime).  The last chapter was also memorable for its description of a particular equation used in high-frequency stock trades, the misapplication of which Stewart claims was partially responsible for the 2008 recession.

The Music of the Primes
Marcus du Sautoy (on Amazon)
It is said that Gauss once asserted that "Mathematics is the queen of the sciences and number theory is the queen of mathematics."  This book outlines the history parts of this "queen of mathematics" that relate to prime numbers.  It includes mini-biographies on the people who made great breakthroughs in the search for a formula for the nth prime; obviously the story isn't finished yet, but it's a pretty neat overview of how primes are important, who made them important, and other related topics.

As someone who finds Number Theory fascinating, I'd recommend this book especially to people who like Project Euler problems--not because it will help you solve the problems per-se, but because it provides some historical background to the people who developed the equations you use to solve Project Euler problems.

To Engineer Is Human
Henry Petroski (on Amazon)

This is a wonderfully dry book--one that might bore some people, but I loved it.  (I actually read this right after reading CODE.)   Petroski discusses the role of failure in design, why the principles of engineering are intuitively "built-in" to the human brain, and how engineers must account for error in their designs.  The most thought-provoking and the single most vivid idea that has stuck with me since reading this book was a connection he drew between computerized design and an increased failure rate in new products (toys, furniture, or even buildings).

The Abolition of Man
C. S. Lewis (on Amazon)

C. S. Lewis is known primarily as the author of The Chronicles of Narnia, then as a Christian Apologist.  So then, why am I asserting that this particular book is relevant to all computer scientists?  In fact, this book is of particular interest to anyone working in a field of applied science.  It provokes thought on why we're solving the problems that we are and why we're even interested in the sciences.  In particular, it discusses the effect of a morality outside ourselves on the purpose of science; the third and final chapter paints a vivid picture of what happens when we reduce mankind simply to "nature."  This book bears re-reading, and perhaps someday I'll write another blog post on why every scientist (applied or not) should read this book.