This article is part of the article series "My Top 100 Programming, Computer and Science Books."
<- previous article next article ->

Welcome to part two of my 100 favorite programming, computer and science books. If you're just joining, please see part one for introduction. In this part I'll cover a mix of my favorite theoretical and practical books because as Donald Knuth says in his Selected Papers on Computer Science, "The best theory is inspired by practice; The best practice is inspired by theory."


Slide 28 on page 161 from Don Knuth's Selected Papers on Computer Science.

I'm a huge fan both of theory and practice split 20/80. I love to get practical things done and I also like to learn theory behind what I'm doing. My most creative ideas always come from theoretical books. Read many of them and suddenly many ideas click together and form something amazing.

Some readers asked why I only do five books at a time. Very simple - writing a single blog post about 100 books would take me several weeks of effort. Splitting it in tiny parts makes it much easier to get done. Progress feels good and the series is incrementally getting published.

If you're interested in this article series, you can subscribe to rss feed of my blog and follow me on twitter for updates.


My super nerdy bookshelf.

Alright, let's get to this week's books!

#6 Don Knuth's Selected Papers on Computer Science


Selected Papers on Computer Science.

This is one of the most accessible of Knuth's books. I enjoyed it a lot. It's written for people who aren't necessarily specialists in the subject. It's for educated people in all fields and you don't need to know too much math to read through this book.

Knuth says the following about this book, "If any of my work deserves to be remembered, it is now in the form that I most wish people to remember it.". Knuth discusses topics such as coping with finiteness, usefulness of toy problems, theory vs practice, history of algorithms, Von Neumann's first computer program, and many others.

This is the book to buy if you want to get familiar with Knuth's work in an accessible way and learn something new without much effort.

I just remembered I had written a blog post many years ago called Donald Knuth's First Computer based on a chapter in this book. I even scanned a picture from the book of young Donald Knuth at age of 20 working on his favorite IBM 650 computer in 1958:

Young Donald Knuth from 1958 at an IBM 650 Computer
Young Donald Knuth, age 20, at his first IBM 650 computer in 1958.

Author: Donald E. Knuth

#7 To Mock a Mockingbird


To Mock a Mockingbird.

One of the most remarkable and fun books I've ever worked through. This book teaches combinatory logic by masking combinators as singing birds. You'll be hearing Turing birds sing and you'll be traveling to Godel's forest. Make sure to be prepared for your journey with a lot of paper and tea as this book will capture you once you start working through the problems. You'll be having so much fun along the way as you discover new birds and your mind will stretch a lot. If you've patience to work through all the chapters, you'll learn about Church encoding and Godel's incompleteness theorem in the end.


THE MASTER FOREST - ONLY THE ELITE ARE ALLOWED TO ENTER.

This book may be very hard to find as it's out of print. I got my copy years ago when it was still in print. There are 10 used books available on Amazon right now. It's also available on Kindle and Nook. If you want a printed copy try try searching Ebay and Powell's. There are a few copies on sale.

Author: Raymond Smullyan

#8 The Seasoned Schemer


The Seasoned Schemer.

The Seasoned Schemer is continuation of The Little Schemer that I listed as my #4 favorite book in the first part of this series. This book is written in the same style as The Little Schemer and it's extremely fun to read. It's a dialogue between you and the authors but unlike The Little Schemer that teaches you to think recursively this book teaches you to think about the nature of computation. You'll learn about closures, continuations and continuation passing style (cps), y-combinator and implement your own Lisp in Lisp at the end.

When I read the book, I collected all the code examples and programming commandments on github: the-seasoned-schemer repository.


A solution to one of the problems in The Seasoned Schemer.

Authors: Daniel P. Friedman and Matthias Felleisen.

#9 Expert C Programming


Expert C Programming.

Back to practical books, this is a classic book on C programming. I learned the language purely by programming and reading code examples without ever reading a single tutorial and this was my first real book on C programming language. This book is for people who already know C well. It presents subtle aspects of the language and reveals the shocking truth that C arrays and pointers are not the same thing. Language quirks are accompanied by interesting stories and suggestions called handy heuristics. It's amusingly written, and the historical anecdotes are very interesting as well.

I heard someone say, "You'll definitely know you're a geek when you find yourself chuckling at all of the hilarious comments in the book. What Peter van der Linden has produced is not so much a book about C programming as it is a dense little slab of hacker culture. It's a snapshot of the days when "the Internet" was almost synonymous with "UNIX account.""

Spot on. This book will increase your geekiness level by 10 points. Go get this book!


A hilarious programming challenge.

Author: Peter van der Linden

#10 Laszlo Lovasz's Combinatorial Problems and Exercises


Combinatorial Problems and Exercises.

This book is probably the most advanced book that I will recommend in the whole series. But it's so good that I just had to recommend it as soon as possible and put it in spot #10. This book is written in problem-hint-solution style. Problems take the first 100 pages, followed by hints and solutions in the next 500 pages. Lovasz starts off with simple problems that anyone can solve and quickly moves to more advanced problems. There is no theory in this book.

Every once in a while when I feel like doing some math I work through a couple of problems. I've found that problem-hint-solution style is perfect for quickly learning new problem solving techniques. If you want to improve your combinatorics skills and get better in graph theory, and you love to solve problems then this is the book to buy.

Funny story - I've heard that the first year PhD students in Hungary (where the author is from) are required to work through all the problems in this book. Those who can't solve the problems don't make it to second year of PhD studies.

This book is also out of print so try scouting ebay and other book stores for it.

Author: Laszlo Lovasz

Until next time!

I hope you liked these five book recommendations. As always, let me know in the comments what your favorite books are, subscribe to my blog, follow me on twitter, and until next time!

This article is part of the article series "My Top 100 Programming, Computer and Science Books."
<- previous article next article ->

Comments

Daniel Permalink
November 29, 2015, 13:55

Thank you for this list. I love computer science, and was afraid this would just be another list of "books the author thinks sounds cool", where he/she has obviously never read them; like reading a cheap magazine article. This feels so different, and that makes me happy. Well put, and clearly authentic comments.

As a bonus, you just made writing my wishlist for christmas the easiest job ever!

So, thank you :)

Kudret Hankollari Permalink
March 09, 2016, 14:57

I need computer science for high schools.Which company publish them.

August 22, 2016, 13:01

Thanks for your list. Where can I find the rest of them? I only saw five parts?

August 22, 2016, 15:31

Work in progress. I post 2-3 parts a year. Part 6 will be posted in September.

Leave a new comment

(why do I need your e-mail?)

(Your twitter handle, if you have one.)

Type the word "quake3_462": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.

Advertisements