Almost everyone has, at some point in their life, read a great book. Great books are distinguished by the fact that they are profound, well-written, wisdom-packed recordings with the power to transform the way we think about things. Great books are a lot like great teachers; the really great ones don't come along as often as we'd like and the so-so ones makes us realize how great the great ones are.
Lists of life-changing books (hopefully):
Learning from masters or masterworks is truly a pleasure and so this list has been started, in the hopes that folks will contribute the titles that have most inspired, transformed and educated them in the field of software.
These lists are called "Great Books" lists, but it is more than that: the lists should also include great articles, speeches, great code, architectures and languages. Please help us grow this list! -JoshuaKerievsky
Wow. There is a shocking lack of "Great Books" on these lists. I saw two possibilities. Get out more people. How about A Tale of Two Cities by CharlesDickens, or LordOfTheRings by JrrTolkien, or The Agony and the Ecstacy, or Ubik (by PhilDick)?
These lists are quite large - does anyone have ideas about where to take them, that is, how to make them a more useful resource? I suppose we could begin by creating categories, and perhaps sorting entries. But I've found a few books on the lists that I certainly do not consider to be, uh, "Great." So what to do. Do we take a Wiki vote? Perhaps this means everyone can put a "*" beneath the books they think should be in the final lists. Or does anyone have other ideas about how to prune or whether to prune? --JoshuaKerievsky
Oh well, a *truly* great book: StructureAndInterpretationOfComputerPrograms.
This book will definitely enlarge your horizons and make you view computations in ways you never had before. -- AlainPicard
Yes! This is the book on programming to me - if there can be such a thing. -- ChristianLemburg
The full text is online at http://mitpress.mit.edu/sicp/
On many of the other entries on the lists I can only say -- Great Books, all right! My two must reads are TheMythicalManMonth and Jackson's book Software Requirements and Specifications -- both are short and both are absolutely right on!
From MichaelHarings : There are a number of good book bibliographies, I suggest these could be put into a list. One recent one is from SteveMcConnell's AfterTheGoldRush: http://www.construx.com/profession/ where he's working to codify software engineering. Also, ThePragmaticProgrammer has a good Resources section and a bibliography (also online at ). The Decline and Fall of the American Programmer, by Ed Yourdon: http://www.yourdon.com (the site has more recent stuff) has a Programmer's Bookshelf plus excellent running commentary. Code Complete has a big one too.
And while on the topic of Great Books, see http://adidam.org/library/home.htm : The Laughing Man Library brings together, for the first time, a guided comprehensive summary of the wisdom traditions of mankind.
Not software but definitely 'architectures'....
Agreed. Edward de Bono can get a bit preachy and occasionally sounds like a MotivationalSpeaker?, but this book is a classic. I really liked the fact that it's concise and simple in it's explanations. -- ThomasLockney
Does anyone have any recommendation towards a GreatMathBooks? section? I'm a voracious reader, and consider many of the books discussed here to be fantastic - unfortunately I've been hobbled in my self-study of SoftwareEngineering by a barely high-school level math education. Usually this isn't a problem, but I hit a wall when I start reading books and articles about FunctionalProgramming, as well as just about anything by DonaldKnuth. Are there equivalent books to the ones listed here, in the realm of mathematics? Terse, definitive, lucid texts that explain higher maths as well as the Gof4 explain patterns or SteveMcConnell explains quality programming? Or will I just have pursue that CS degree? (a near impossibility for me, unfortunately...) -- AvdiGrimm
I can try and help you Avdi, but you must narrow the scope a bit. Keep in mind that the space of all mathematics is much, much larger than the space of all CS. The math used in day-to-day software is fairly elementary. A basic understanding of algebra, LinearAlgebra, combinatorics, GraphTheory, and simple asymptotics wouldn't go amiss. For more specialized problems, other domains are necessary. I know of many great math books, unfortunately most of these are at least graduate level material. For elementary material you will be hampered by the astonishing number of mediocre undergraduate texts out there. If you give me a more specific idea of what you are looking for, I will try to make some recommendations. It is probably worth noting that what you think of as 'mathematics' and what a mathematician thinks of as 'mathematics' are probably quite different. Some of the material you are looking for may be better provided by intro CS, physics or engineering texts.
I can try... I want to know the math that is considered necessary for a CS degree. Not the math required for any specific programming application; but that which will help me in studying the science of computing itself. I want to understand when FP people lapse into mathematic (as opposed to programmatic) notation. I want to understand what it means when a program is "provably correct". I want to truly understand the concept of "TuringComplete". I want to see the fundamental connections between programming languages and mathematics that I've heard, and can dimly see, exist.
I'd also like to be able to pick up a book such as "Algorithms in C++" and grok the meaning and usefulness of the algorithms presented therein; but I realize this is probably a different domain than what I was talking about above.
I'll have a think about recommendations for math books. As far as the latter goes, have you seen a book by A.K. Dewdney called "The New Turing Omnibus: 66 excursions in Computer Science"? It has fairly non-mathematical treatment of many fundamental CS ideas. Some of the chapters are quite good, if I recall correctly.
People interested in this field of enquiry should consider the line of "Theory of Computation". This includes automata such as Turing Machines as well as complexity theory and computability. I recommend no specific texts, there are many worthy and the cream rises in good search.
See BookShelved for an entire wiki devoted to books, great and otherwise.
See also: GreatPoemsList