btjones

Logo

Books

These are some books that I’ve read and liked in various different mathematical/computer science topics. I start with books that are applicable to some classes at Cal Poly and then descend into deeper topics.


Introduction to Programming

If you liked CSC 101/202 (or you’re in it right now and you want some more books to read), here are some books you might like. Most of these do not use the programming language we use at Cal Poly for 101/202 (Python), so they’re maybe not the best to accompany a current student.


Introduction to Proofs

If you liked CSC 248 (or you’re in it right now and you want some more books to read), here are some books you might like.


Programming Languages

If you liked CSC 430 (or perhaps haven’t taken it yet, but you’re excited for it), here are some books you might like!

Functional Programming

Implementing a Programming Language


Theory of Computation


Type Theory

This is arguably still a part of the above Programming Languages section, but the books are (in my opinion) different enough that I put them in their own section. They tend to be more theoretical (definition/theorem/proof style).


Lambda Calculus

Lambda calculus is part programming, part mathematical logic. It’s arguably the first programming language, predating computers by a few decades. In particular, it’s the backbone of functional programming languages.


Category Theory

This starts to deviate quite a bit from practical computer science into very mathematical topics. There is a large overlap/intertwining with certain parts of type theory. A lot of category theory is quite abstract (sometimes called “abstract nonsense”) and heavily utilizes examples for intuition. A strong differentiator in introductory books is what background is needed to understand the examples. Several of the books I have in this section are specifically aimed at computer scientists.

Introduction

Application


Mathematical Logic

We don’t really have a course at Cal Poly going into serious study of mathematical logic. We have a brief introduction, but we don’t see any deep results (e.g., soundness, completeness, and compactness of first-order logic). We also don’t really need any of those result, but some of them (e.g., Gödel’s incompleteness theorems) are relevant to computer science. More on Gödel’s incompleteness specifically in Incompleteness/Undecidability.


Incompleteness/Undecidability

Several books in this compilation relate to two major 1930’s papers from Kurt Gödel and Alan Turing. These are both very tough to read as they were aimed at experts in the field.

The main results of incompleteness (Gödel) and undecidability (Turing) are then explored in the following more recent books.


Set Theory

Set theory is the modern foundation for most of mathematics. Properly explaining a lot of the nitty-gritty details is hard. Ernst Zermelo and later Abraham Fraenkel were two people who worked on properly defining what is a set and what operations are allowed when working with them.


Philosophy of Mathematics

What is mathematics all about? Does it have a subject matter? What is this subject matter? What are numbers, sets, points, lines, functions, and so on? What do mathematical statements mean? What is the nature of mathematical truth? How is mathematics known? What is its methodology? Is observation involved, or is it a purely mental exercise? How are disputes among mathematicians adjudicated? What is a proof? Are proofs absolutely certain, immune from rational doubt? What is the logic of mathematics? Are there unknowable mathematical truths?


History of Mathematics/Computer Science

Honestly there’s a large overlap between books on the history of mathematics with books on philosophy of mathematics. Several mathematicians through history have been motivated by their philosophic outlook. These books are a bit less philosophical though.


Books I Plan to Read

In no particular order.