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

Hey everyone! Here's part three of my 100 favorite programming, computer and science books. If you're just joining, please see part one and part two for introduction.

This time I'll be sharing my favorite books about Unix, logic programming, thermodynamics, and mathematical foundations of computer science.

In one of the next posts I'll create a neat pdf with all the books listed so far and keep updating it as I write more posts.

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 bookshelf.

Here are this week's five books.

#11 The Unix Haters Handbook (free pdf)

The Unix Haters Handbook (pdf).

This book is true Unix classic. If you know and love Unix, you'll love this book. This is one of the first books I ever read and I love it. I'm a huge fan of Unix and computing history and this book taught me tons of facts and trivia about both topics. It contains hundreds of hilarious stories about what Unix gets wrong (and also right). It's a bit outdated but for true geeks it shouldn't matter, it's still a very fun read.

Here's what preface says about Unix: Modern UNIX is a catastrophe. It's the "Un-Operating System": unreliable, unintuitive, unforgiving, unhelpful, and underpowered. Little is more frustrating than trying to force UNIX to do something useful and nontrivial. Modern UNIX impedes progress in computer science, wastes billions of dollars, and destroys the common sense of many who seriously use it. An exaggeration? You won't think so after reading this book.

Chapter 1 is called Unix is the world's first computer virus, and this is how the book illustrates C++ is written:

How C++ is written according to The Unix Haters Handbook.

If you want a physical copy there are some used copies at Amazon and eBay. Just don't expect used copies to come with a Unix barf bag as it's probably been used by the reader already. :)

Unix barf bag that comes with the book.

Authors: Simson Garfinkel, Daniel Weise, and Steven Strassmann.

#12 Unix and Linux System Administration Handbook

Unix and Linux System Administration Handbook.

I call this book the Unix bible. I got this book (third edition) 13 years ago and read it pretty much cover to cover in a few weeks. Even 13 years later I still refer to it every now and then, and I always find something new. This book is a true classic and pretty much the only general Unix sysadmin book you will ever need. If you're just starting with Unix and Linux, then this is the book to get. At over 1000 pages, it's packed with tons of useful information and not only you'll become a Unix expert, but also add a ton of points to your geekiness levels. I remember how I spent several nights setting up my own caching bind server after reading the chapter on DNS. Fun times!

This book covers the major variants of Unix and Linux distributions such Solaris, HP-UX, AIX, and Ubuntu, Suse, Redhat. This book is divided into three large chunks - basic administration, networking, and other stuff.

Section one - Basic system administration.

Basic administration presents a broad overview of Unix and Linux from a system administrator's perspective. The chapters in this section cover most of the facts and techniques needed to run a stand-alone system, such as managing storage and file system, controlling processes, setting up backups and configuring the kernel.

Section two - Networking.

The networking section describes the protocols used on Unix systems and the techniques used to set up, extend, and maintain networks and Internet-facing servers. High-level network software is also covered here. Among the featured topics are the routing and network management, the network file system, electronic mail, and network security.

Section three - Stuff.

Other stuff includes a variety of supplemental information. Some chapters discuss optional features such as printing, server virtualization, eco-friendly computing and the politics of running a system administration group. Quote from part three: Good sysadmins have both technical skills and “soft skills.” The ability to organize a group of administrators and make sure they meet the organization's needs can be the difference between an OK administrator and a great one.

This book also has an insanely cool domain name

Authors: Evi Nemeth, Garth Snyder, Trent R. Hein, and Ben Whaley.

#13 The Reasoned Schemer

The Reasoned Schemer.

In parts one and two I recommended The Little Schemer and The Seasoned Schemer. Now it's time for The Reasoned Schemer.

This book takes you on the next adventure. The Little Schemer taught lists and recursion, The Seasoned Schemer taught computation and now Reasoned Schemer teaches you logic programming and relational programming. Relational programming describes what you want in the result rather than how to get to result. As any book in the Schemer series, it's extremely fun to read and it will bend your mind. It will make you think from the first page. All in all this book teaches the essence of Prolog - the most well-known logic programming language.

Oleg Kiselyov is one of the authors. He's the craziest functional programming guy I know. I'm a big fan of his work. I once said that anything by Oleg Kiselyov gets an automatic upvote and so does this book. Oleg also implemented the logic programming language used in this book. It's called Kanren. If you're working through this book you've to download Kanren and run all the examples through it. It will help you to get through the book.

Only the true schemer fan will understand this message.

Authors: Daniel P. Friedman, William E. Byrd, and Oleg Kiselyov.

#14 Thermodynamics


Now from computers to physics. This is a classic science book by one of the great physicists of all time, a Nobel Prize winner and one of the chief developers of quantum mechanics - Enrico Fermi. The text is elementary in treatment and remarkable for its clarity and organization. It covers the core of thermodynamics - thermodynamic systems, laws of thermodynamics, entropy, ideal and real gases, and other core topics.

Everyone should read this book to be a well rounded person. At 150 pages, it's pretty easy to go through. From my own experience this book can be worked through in two full nights. I did that right before the exams. :)

As I was writing about this book I remembered the puzzle of using a barometer to measure height of a building. How would you do that? One of the solutions is to use the ideal gas law to come up with the solution. Here's my solution to this puzzle.

Author: Enrico Fermi.

#15 Concrete Mathematics: A Foundation for Computer Science

Concrete Mathematics: A Foundation for Computer Science.

Yet another classic. Concrete Mathematics is the second most accessible book by Knuth as one of the co-authors. Concrete Mathematics is a blending of CONtinuous and disCRETE mathematics. This book focuses on practical skills rather than theory. It contains many examples, tricks of trade, and problems with solutions. This book is also fun to read. After reading this book you will be very comfortable manipulating sums, recurrences, discrete probabilities, and number theory.

I learned most of the math used in computer science during my studies but I still got this book to see what I missed. I have read parts of it and the material is very accessible and at the right density, meaning trivial steps from one equation to the next are left out but the most difficult steps are explained.

This is not a comment.

(If you missed, I listed the most accessible book by Knuth Selected Papers on Computer Science in part two of this article series.)

Authors: Ronald L. Graham, Donald E. Knuth, and Oren Patashnik.

Until next time!

As always, I hope you liked these five book recommendations. 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 ->


andy manard Permalink
June 10, 2015, 10:56

Hi, excellent blog, you've said in that you are self taught, what would you recommend to learn C networking/Unix programming? Thanks.

Peter Krumins Permalink
June 11, 2015, 12:57

Glad you asked.

Here are the best possible books to learn C network programming and Unix programming:

Advanced Programming in the UNIX Environment by Richard Stevens

Unix Network Programming by Richard Stevens

You'll also enjoy this book also by Richard Stevens:

TCP Illustrated by Richard Stevens

June 18, 2015, 21:59

Great list! I really like Computer Science: An Overview by J. Glenn Brookshear. It takes you on an in-depth beginner tour, as odd as that sounds: from XOR gates through databases and an intro to AI.

Also Programming Logic and Design by Joyce Farrell.

Hands-down I think the best programming book I've ever read is Aaron Hillegass's Objective-C Programming: The Big Nerd Ranch Guide. Too bad Objective-C is going away. But not tomorrow.

kis Permalink
June 24, 2015, 17:15

Back to the fundamentials...

August 01, 2015, 06:16

Thank fro sharing these books, I just love them. Eagerly waiting for 4th list. Like you, I also share passion for great programming books, I don't have 1000 books in my self but yes, My phone has got more than 200 :), couple of them are from your suggestions. I have also shared some of the books, which I think every programmer should read. Looking forward to un-earth some gems in your next list :)

December 23, 2016, 22:02

I hope The Unix Haters Handbook won't let me to get bored until the end of the year :)

One of my favorites is The Art of Computer Programming. Oldie but goldie!

Leave a new comment

(why do I need your e-mail?)

(Your twitter name, if you have one. (I'm @pkrumins, btw.))

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

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