1. Godel, Escher, Bach by Douglas Hofstadter
Godel, Escher and Bach, written by Douglas Hofstadter, while the title would suggest it is discussion of a mathematician, an artist, and a composer, is a complex examination of how human beings develop perception and meaning. More specifically, the book explores, through a series of dialogues and narrations, how symbols, thought and language are all intertwined and how reality is essentially a composition of overlapping meanings and perceptions. The book challenges the reader to observe the system of symbolic meanings around him or her objectively.
2. The Art of Computer Programming by Donald Knuth
The Art of Programming, by Donald Knuth, is a comprehensive, multi-volume work discussing various programming algorithms and their analysis. The work was voted by American Scientist as one of the twelve best scientific monographs of the twentieth century. The author famously offered a reward of two dollars and fifty six cents for anyone who found and reported an error in the text. The work features exercises of multiple difficulty levels, from basic warm up exercises to ongoing research problems, allowing the reader to work up his skill and familiarity with the material.
3. The Elements of Programming Style by Brian W. Kernighan and P. J. Plauger
The Elements of Programming Style, by Brian W. Kernighan and P. J. Plauger, is an influential book on the study of computer programming styles and languages. It endorses the strategy that computer programs should be written not only to satisfy the compiler, but also keep the human readers in mind. The book utilizes examples taken from actual, published programs. The book’s recommendations are made in the context of the examples which are realistic rather than an academic vacuum.
4. Theory of Parsing, Translation and Compiling, by Alfred V. Aho, and Jeffrey D. Ullman
The book, Theory of Parsing, Translation and Compiling, by Alfred V. Aho, and Jeffrey D. Ullman, is intended for a senior or graduate course in compiling theory. It is a theoretical treatment of a practical computer science subject. Since computer science is an ever changing area of study, this book emphasizes ideas, rather than specific application details. The algorithms and concepts presented in the book should survive to new generations of computer technology, programs and systems. Numerous examples are given, with specific context, rather than on the large complicated contexts normally found in implementations, even in cases where the theoretical ideas are difficult to understand in isolation.
5. The Computer and the Brain, by John von Neumann
The Computer and the Brain, by John von Neumann, is theoretical work which examines mathematics, logic’s, and statistics as the basic tools of information. The book explores how these subjects make up the entirety of the planning, usage and coding of computers. The author explores how mathematics and logic are related to the functions of the organic human brain in the same way they are applied to the artificial automated computer processor.
6. A Programming Language, by Kenneth E. Iverson
A Programming Language, by Kenneth E. Iverson, explores how programming language is a signifier for a whole host of mathematical algorithms and procedures. The book focuses on specific areas of application which serve as universal examples and are chosen to illustrate particular facets of the effort to design explicit and concise programming languages.
7. Writing Efficient Programs, by Jon Louis Bentley
Writing Efficient Programs, by Jon Louis Bentley, illustrates to the reader how the
primary task of a software designer is the development of programs that are not only useful, but easy and inexpensive to maintain. Moreover, the book explores how software must have specific application as well as versatility to me modified for unforeseen uses. Lastly, efficient programs must be efficient to write as the cost of writing will determine their competitiveness in the software market.
8. Computation: Finite and Infinite Machines, by Marvin L. Minsky
Computation: Finite and Infinite Machines, by Marvin L. Minsky, explores how the
introduction of the computer in the last half century has affected the fabric of human society. The book essays to describe the application and limitation of computer technology as it relates to human progress and potential.
9. Operating System Principles, by Per Brinch Hansen
Operating System Principles, by Per Brinch Hansen, gives computer science and professional programmers a general explanation and analysis of operating systems. The book explains how an OS works to allow sharing of information easy and efficient.
10. Artificial Intelligence, by Elaine Rich
Artificial Intelligence, by Elaine Rich, gives programmers an introduction to the techniques and problems associated with A.I. The book features references throughout that allow the reader to pursue the topics deeper than would be possible within the defined scope and space limitations of the book.





























June 30th, 2008 at 7:00 pm
Nice Site layout for your blog. I am looking forward to reading more from you.
Tom Humes
September 16th, 2008 at 6:55 pm
Thanks for posting this. I have book marked it for future reference.
September 22nd, 2008 at 11:20 am
I’m surprised that “Structure and Interpretation of Computer Programs” didn’t make it onto the list.
Great list and thanks for it. Bookmarked. RSS’d.
September 22nd, 2008 at 1:13 pm
im buying them all.. here i come future!
September 23rd, 2008 at 6:39 am
I’ve read 2 or 3 of these a few years ago. I’ll need to check out the rest. Nice post.
September 23rd, 2008 at 6:49 am
my favorite book was programming structure and development.
September 23rd, 2008 at 6:55 pm
Thanks so much for this; I’ve wishlisted them all on paperbackswap.com so I can get them for our IT department’s bookshelf!
September 25th, 2008 at 2:01 pm
The Mythical Man-Month should be on this list.
http://en.wikipedia.org/wiki/The_Mythical_Man-Month
September 25th, 2008 at 4:21 pm
I definitely agree with “Godel Escher and Bach” by Douglas Hofstadter.
Excellent book on about anything really, if you don’t mind taking simple things a bit out of context.
I especially liked the way recursion was explained, resulting in the giant “genie reboot”.
Great list; Props!
September 25th, 2008 at 5:02 pm
Wow, thanks!
September 25th, 2008 at 5:52 pm
Bookmarked. I’ve heard of most of these books and read a few. I make a point of revisiting “Goedel, Escher, Bach” every couple of years, to catch a little more of the stuff I missed on previous passes. I still need to replace my copy of “The Art of Computer Programming” (you dropped a word), which is rotting in a New Orleans landfill next to my copy of the Aho & Ullman “dragon book” and about a cubic yard of other Good Stuff that wouldn’t fit in the car when I had to flee from hurricane Katrina.
September 25th, 2008 at 7:30 pm
I believe CLRS (Introduction to Algorithms - Cormen, Leiserson, Rivest and Stein), SICP (Structure and Interpretation of Computer Programs - Abelson and Sussman) and AIMA (Artificial Intelligence: a Modern Approach - Russell and Norvig) should definitely be on the top ten list.
September 25th, 2008 at 8:15 pm
Sure you could go out and buy those books and miss out on the college experience.
Unless you just hated college I would never recommend that you just read the books mentioned. Instead, go through the college experience. You can’t just walk into a job and tell them that you read this list of books and that allow you to work in computer science.
September 25th, 2008 at 10:30 pm
Maybe a ‘degree’ from a community college.
September 25th, 2008 at 11:37 pm
what about Programming Pearls?
September 25th, 2008 at 11:48 pm
I cant sleep at night because I know theres a 13 year old girl out there with an undiscovered iq of 230, reading ‘A Young Lady’s Illustrated Primer’ and she already has the beginnings of a Grand Unified Theory…
My point is read science fiction too… you need to _think_ and _question_
In terms of books, for a novice… Id recommend 3 and 4, I found them absolute classics, with style. After that.. stop reading for a while, then write some real programming projects. Then tear them apart and rewrite them. Then learn lisp, then write a small interpreter for your own language in C or Haskell…
Problem is if your really good at this, you’ll be bored by university…but you should still keep passing papers, and do some hard math classes - there are some very clever people at college but you kind of have to seek them out.. Hang in there the stage III papers tend to be more interesting.
nice post.
gord.
September 26th, 2008 at 12:31 am
are those books are already on books.google.com ?
September 26th, 2008 at 1:08 am
Completely disagree. Books alone do not guarantee you degree substitution. If you believe that then I got real estate in Florida, USA, to sell you for the ultimate in cheap prices.
Unfortunately, the college experience is not all that it’s cracked up to be when it comes to employers. What matters in this regard is the discussion and dialog between student and instructor and/or student and students(projects), not to mention the application of the concepts discussed throughout a course or academic career. Books are one track, typically, projected concepts brought forth by one or less than a few authors. In university and work place settings, the idea is that there exists multiple points of view that would idealistically stimulate thought and innovation. Books are mere teaching aids and instructional manuals - what the degree is worth to the corporate world is often more than technical skills; think people skills.
September 26th, 2008 at 2:15 am
Some books look very interesting and thank you for the list.
Well, are they popular books for the US colleges? I have not had them on my reading list after studying computer science and information systems in Australia.
September 26th, 2008 at 2:40 am
Some nice to read, some excellent books. Others have been added in the comments.
Certainly not the eqivalent of study experience. It is simply a gross misunderstanding that lectures may be substiuted by books (and vice versa). Otherweise, Gutenbergs invention would have ended university in 1460.
But o.k: read them one after another. You may drop Minskys totally outfdated and not very knowledgable text and Iversons reflections on APL - that was iBMs hidden gem fourty years ago. Take instaed Bertrand Meyers exellent “Object-Oriented Software Construction” even if no never will touch Eiffel.
Trys
September 26th, 2008 at 3:02 am
great list, but…
>Operating System Principles, by Per Brinch Hansen
NO TANENBAUM?
September 26th, 2008 at 3:26 am
Good list! I own a couple of these and am thinking of a couple more now. I don’t own the set by Knuth and own others by Aho and Ullman, Compilers.
September 26th, 2008 at 3:54 am
How about “RTFM”? You know, “Read The _ucking Manual.” Excellent reading!
September 26th, 2008 at 6:01 am
Technically, Knuth is at least 3 volumes, so that’s 12 books.
Godel, Escher, Bach is a tough one, it’s either the best book ever, or
our fields’ “Atlas Shrugged”.
September 26th, 2008 at 6:17 am
This is an excellent list. I’d not heard of “Gödel, Escher, Bach: an Eternal Golden Braid” until this. I’ll definitely check this out.
As for the Aho-Ullman text (#4 regarding compiler theory), it’s a very hard book to read and understand. While getting my MSCS, I used this book for a class. However, I had to reference three other texts along with the internet just to understand the subject matter. Personally, I feel like a new book on the subject needs written since the text, while still accurate and useful, needs updated and clarified with better examples and better explanations of key points to make it more useful as a technical book rather than just a theoretical book.
Sadly, though, there are no really good compiler books out there. So learning about compiler theory is going to rely heavily on others’ experiences, the internet, and multiple texts.
Still, it’s inclusion in the list, I feel, is important. Understanding the theory behind compilers has been very useful and has helped me bypass hours of confusion regarding simple bugs.
Great list!
September 26th, 2008 at 7:43 am
It’s true that after finishing these books one would have a solid understanding of CS than some undergraduate students, but I don’t think it’s an average person’s capability to finish all and make use of them on their own.
Still, thanks for sharing though, I’d like to check them out.
September 26th, 2008 at 8:57 am
perhaps I went to the wrong school. My degree required other things like math, English, physics, and history.
September 26th, 2008 at 8:59 am
Code Complete should be on your list.
Cheers, Scott
September 26th, 2008 at 12:18 pm
If it would have been that easy then everybody would have been engineer. It is just not reading. It is a process that takes to be an engineer. Degree is just a metaphor to represent your hard work over the period.
September 27th, 2008 at 9:29 pm
I’m sure you picked your title to get the most attention, and there are several good books on your list, but take a look at the curriculum of a good computer science school and realize how many subjects you missed. How about math, physics, communications or management? Not to mention the ability to work with others and practical experience. I agree that sicp should have definitely been on the list. I’m not advocating the school route for everyone, but surely reading 10 books is no replacement.
September 28th, 2008 at 1:01 pm
Excellent books on that list! I got to read/reread some of them. Anyone got the ISBN number?
/Ingvar
September 29th, 2008 at 1:03 pm
3 wasted years at uni!!
October 9th, 2008 at 10:56 am
Code Complete by McConnel should DEFINITELY be on the list, and don’t forget Refactoring by Martin Fowler - and Design Patterns Explained by GOF.
must reads.
October 10th, 2008 at 1:59 pm
Good books, but how do they impress an employer?
On your Resume/CV:
“Qualifications: Degree of the First Order in Computer Science from the University of xyz”
“I have read all of the books listed at techoozie, and understand them”
I know you didn’t mean it like this, but still - which would get the interview?
October 10th, 2008 at 9:21 pm
While I agree that it’s not just reading that will qualify you for a degree, it’s also a mindset. So people just see the world in a different way. I’m at a loss when it comes to poetry and lit, but I can scan through some code and understand how and why it’s there even if it’s poorly written. In the meantime, I’m going to get my hands on these books. They look on par with the level I am at, and I need a good compiler text.
October 11th, 2008 at 8:37 am
books are great but pratice is better.. programming camp it is way more fun
October 11th, 2008 at 11:45 am
Thanx!!!
October 11th, 2008 at 12:25 pm
Perhaps, it is not as you think. As lot of comments to this post are suggesting the same thing. They are good but not enough to be a specialist computer professional, you need all other important stuffs
October 11th, 2008 at 3:48 pm
I must respectfully disagree with you on the assertion that these ten books can completely replace a Computer Science degree.
I haven’t even finished my Computer Science degree yet and I have already learned far more information than is contained within these ten books.
Some topics that are not covered in these books: Data security, database design, algorithmics, computation theory (it IS covered but not in the detail it requires), ethics in computers, discrete mathematics, user interface design, systems and network administration, computer graphics, network engineering.
Each of these topics were given an entire six month semester worth of lectures and tutorials along with a required text book and often an additional recommended text book. There are 24 individual subjects in the Computer Science degree at my university. I’m pretty sure you can’t replace that with 10 books.
Even if you made a list of 50 books that covered all of the knowledge involved in the degree you still wouldn’t have replaced the ability to ask questions of your lecturer when you don’t understand something properly.
These are great books and this is a useful list but it falls a long way short of replacing a degree. These are 10 books that will complement a Computer Science degree.
October 12th, 2008 at 3:54 am
Thanks a lot.
October 13th, 2008 at 7:56 am
You also forgot to mention linear algebra, calculus, physics, computer graphics, pattern recognition, and every last one of the general education courses that makes one a well rounded person instead of a one-dimensional geek.
The above books can only replace a computer science degree at a college that teaches computer science in a very mediocre way.
October 14th, 2008 at 9:20 pm
I submit that if you read and understand Knuth’s book, that is enough. The rest could be helpful. I did not find Hofstadter’s book particularly informative. Aho’s book is on my list of ones to read. But really, if you understand Knuth’s The Art of Computer Programming, you can pick up the rest without any problem.
BTW, I make no claim to understanding this book. I have the 3 volumes and some fascicles of it, but it is *very* slow going.
October 14th, 2008 at 9:56 pm
thank
October 17th, 2008 at 4:53 pm
Another vote for the Mythical Man-Month - knowing algorithm design is undeniably important, but that’s only a part of what happens in the real world.
October 22nd, 2008 at 4:22 am
Good list of books, but I think is impossible to substitute a degree in CS reading only a set of books……
October 24th, 2008 at 4:36 pm
Good luck finding the Minsky book outside of a University library.
October 24th, 2008 at 8:38 pm
I see that you didn’t insert any book of algorithms and data structures, what are basic principles that every programmer must (or at least should) know.
Ok, some of the books (I would say two) cover a small part of this subject, but the basis isn’t here…
So, I need to say that these 10 books don’t substitute the course.
October 25th, 2008 at 12:27 pm
This is a really interesting blog post,I have added your blog to my favourites I really like it,keep up the good work!
October 26th, 2008 at 2:00 am
Reading (and solving all exercises of) Knuth’s TAOCP is certainly harder than a usual CS degree and I think GEB book has no place in the top ten list.
I suspect you didn’t read any of these books except GEB.
October 27th, 2008 at 6:32 am
Interesting idea, but these books cover too narrow an area of study to replace a Computer Science degree. I’d say at least 30 are needed to cover the basic field of knowledge and you simply can’t replace the other experience gained at university.
But of course I have a Computer Science degree so I’m bound to say all that
November 5th, 2008 at 12:12 am
Hi, this list is really good. I know most of the books in it, but I’ve only read a couple. I don’t think that there’s a single list of books that substitute a degree :p You just learn to much at university to substitute it with only reading, but that’s my humble opinion.