Classic Computer Science Books

I wanted to start a thread discussion on classic computer science
texts you have read that have influenced you in your lifetime. I am
always on the lookout to acquire books that last beyond the subject
matter where the concepts transcends the era in which it was initially
conceived and implemented. I am an avid collector of books and have an
collected several out of print gems or not available now in hardbacks
over the years as I enjoy collecting these texts for my library.

For example every year I take a week and re-read The C Programming
Language (Kernighan, Ritchie) as it’s the gold standard to simply well
written texts. It’s also a very good read.

I also feel The UNIX Programming Environment also by Kernighan (and
Pike) is also a classic worthy to mention.

It doesn’t have to be completely programming related. It could also
have been the most influential book on mathematics, writing, or
sciences, or database concepts.

What books have you read that you still admire and refer to even after
all these years? The kind of books that you would love to be
altruistic and loan to your colleague or friend but fear it wont ever
get returned?

~Stu

“Network Programming with Perl” by Lincoln Stein.

If anyone wants to learn network programming, it’s worth it to learn
perl just to read that book. It’s a shame that it has not been updated
and republished.

On Thu, Jun 9, 2011 at 5:18 PM, Stu [email protected] wrote:

I wanted to start a thread discussion on classic computer science
texts you have read that have influenced you in your lifetime. I am
always on the lookout to acquire books that last beyond the subject
matter where the concepts transcends the era in which it was initially
conceived and implemented. I am an avid collector of books and have an
collected several out of print gems or not available now in hardbacks
over the years as I enjoy collecting these texts for my library.

Hmm, I’m going the opposite direction. I think it will be all PDF from
here
on out (annoyingly, publishers haven’t embraced this yet). But then
again, I
wonder if technical books will even be competitive. Things change so
fast
that books are almost stale by the time they’re published. At the
beginning
of the summer I went through all my books, and realized I had some that
I
had bought within the last year or two but not gotten to read yet, but
they
were already obsolete.

For example every year I take a week and re-read The C Programming
Language (Kernighan, Ritchie) as it’s the gold standard to simply well
written texts. It’s also a very good read.

O.o That was actually my first book, I bought it because it was the
shortest
C book at Barnes and Noble. My opinion of it wasn’t very high at that
time.
I felt like there was some context or tacit information that would have
prevented me from getting past even the first chapter if I hadn’t been
able
to figure it out. Maybe I would like it more now, but I haven’t felt
compelled to re-read it.

What books have you read that you still admire and refer to even after
all these years? The kind of books that you would love to be
altruistic and loan to your colleague or friend but fear it wont ever
get returned?

I liked The Pragmatic Programmer, but was probably still too novice to
appreciate most of it at the time I read it. Still, it was pretty
accessible, and very motivating. It makes you want to write good code.

I like Pragmatic Thinking and Learning, I actually reread the last 70
pages
a few days ago, and decided to set up a personal wiki as a result. It’s
another motivating book. Makes you want to be productive, get shit done,
organize your life, encourage your creative side (R-brain in the book).
I
got a lot of takeaways from this book, and even almost a year later,
still
do (intermittently) some of the things they talk about in it. It also
makes
a point to give you a mental model for your brain. And I think it gets
better as you go.

Peopleware, I read this b/c Joel Spolsky always talks about it. I found
it
enlightening and encouraging. It’s a short read, each chapter is pretty
self
contained. I read about half of it one night instead of studying for
Chemistry :stuck_out_tongue: It’s about working together, managing teams, developing
software. A lot of attention is paid to environment, things like noise,
concentration, flow, lighting, furniture, etc. A lot about what makes a
good
team, and how to avoid killing an otherwise good team. A lot of
attention
paid to valuing people.

Rework, if you ever want to start a business. Even if not, there’s a lot
of
generalizable advice in it. I’ve probably read it three or four times
now,
because each chapter is like a page long, and you can read the whole
thing
in a car ride on the way to your next Ruby conference. I just toss it in
my
bag, then when I’m waiting for an appointment, gives me something to do
while I wait. You can drop in anywhere and just go with it, literally.

When I took Java in school, I loved Absolute Java. At that time, it was
a
perfect fit for me, and I learned so much from that book. I thought I’d
keep
it for ever, but when I went through my books last month, I realized I’m
beyond it now, and it doesn’t have anything for me any more, so I gave
it to
the DAV. But I still think its a great starter book, it helped me
understand
things like arrays and memory, and really grounded a lot of concepts for
me.

I’ve read quite a few Ruby books, but none of them have really inspired
me.
Eloquent Ruby might have if I’d read it two years ago (also had to deal
with
DRM infested bullshit when I tried to buy the PDF from the publisher).
The
RSpec book probably came the closest, but I didn’t get a chance to
finish it
because school started up again, I’m hoping to go through it again this
summer. The Pickaxe looks like it has a lot of great info in it, but I
just
can’t bring myself to sit down with a 1000 page book.

And lastly, Talion: Revenant, the only fiction book I like. I’ve read it
maybe 6 times, and try to loan it out to all my friends who read fiction
whenever I can. It’s fantasy, so elves and magic and trolls and such.
But it
doesn’t drag you along an “epic journey” like most fantasy books in
their
quest to copy Lord of the Rings. Instead, it tells two stories of the
same
character, interleaving them with each chapter. The individual stories
are
imagination candy, and I think each chapter gets better than the chapter
before it. But it also has strong character development, which really is
what made the biggest difference for me in the end.

“Metaprogramming Ruby” by Paolo Perrotta

The solutions for the example tasks are impossible to come up with on
your own, partly because you are given incomplete information about the
task, but the text and the explanations of the profered solutions are
excellent.

On Fri, Jun 10, 2011 at 09:22:58AM +0900, Josh C. wrote:

Hmm, I’m going the opposite direction. I think it will be all PDF from here
on out (annoyingly, publishers haven’t embraced this yet). But then again, I
wonder if technical books will even be competitive. Things change so fast
that books are almost stale by the time they’re published. At the beginning
of the summer I went through all my books, and realized I had some that I
had bought within the last year or two but not gotten to read yet, but they
were already obsolete.

Books are extremely important for fundamentals. That won’t go away just
because the details change.

compelled to re-read it.
It’s a good book. Once you feel comfortable enough with programming in
general to be able to wade through its density, go back to it.

What books have you read that you still admire and refer to even after
all these years? The kind of books that you would love to be
altruistic and loan to your colleague or friend but fear it wont ever
get returned?

I liked The Pragmatic Programmer, but was probably still too novice to
appreciate most of it at the time I read it. Still, it was pretty
accessible, and very motivating. It makes you want to write good code.

That’s actually the first book that sprang to mind when I saw the topic
of this thread, but then I though “Does that qualify? It’s not exactly
‘computer science’, per se.”

I like Pragmatic Thinking and Learning, I actually reread the last 70 pages
a few days ago, and decided to set up a personal wiki as a result. It’s
another motivating book. Makes you want to be productive, get shit done,
organize your life, encourage your creative side (R-brain in the book). I
got a lot of takeaways from this book, and even almost a year later, still
do (intermittently) some of the things they talk about in it. It also makes
a point to give you a mental model for your brain. And I think it gets
better as you go.

That’s another good book. I second your recommendation.

I’ve read quite a few Ruby books, but none of them have really inspired me.

Ruby book recommendations:

10 Great Books And Other Resources For Learning R.
http://blogs.techrepublic.com.com/programming-and-development/?p=3886

Eloquent Ruby might have if I’d read it two years ago (also had to deal with
DRM infested bullshit when I tried to buy the PDF from the publisher).

Thanks for mentioning that. I’m thinking about getting the book; I’ll
avoid the PDF (and other PDFs from the same publisher, I guess). This
kinda limits what books I’d be willing to buy from that publisher, given
the benefits of a searchable digital book on my laptop. After all . . .

DRM Is Counterproductive
http://blogs.techrepublic.com.com/security/?p=5604

Probably obligatory, but The Mythical Man-Month was a pivotal point for
my education.

Sent from my Android phone with K-9 Mail. Please excuse my brevity.

Stu [email protected] wrote:

Thank you for the responses. I look forward to reading others.

In effort to make a quick point about the K&R C book I do agree it is
terse. I also agree it’s more a reference for a seasoned C programmer
than tutorial for an absolute beginner. If you remove the language in
context and simply read the prose it has to be one of the most well
written efforts to distill the authors knowledge and experience on the
subject of programming to the reader.

I am interested in books that do just that.

Since some Ruby books have been mentioned

If I was on a desert island and could take one ruby book with me The
Ruby P.ming Language by Matsumoto/Flanagan would be what I would
pick. I have enjoyed reading Metaprogramming Ruby as well but Matz’s
book seems to still have the longevity value.

I tend to enjoy reading Stroustrup’s book on language creation.
Stroustrup tends to be a well skilled technical writer. I have in my
queue to read Meyers C++ books and Crockford’s Javascript: The Good
Parts.

If a great book is in digital form only I’m all ears. I also read pdf
and web only books. In some cases to pre-view it for my library and
ultimately buy the print version if I feel it’s worth owning. I read
the java version of ‘How To Think Like A Computer Scientist’ last year
solely off the pdf available drm free online. I plan to eventually
read the python and c++ version under the same title as those books
are pedagogical in lesson and theory.

So anyone responding to this thread. Please don’t feel the need to
omit e-book or lulu DIY published books or even a well written web
based resource or article. Though I am interested in books that mainly
illuminate concepts I would be interested in hearing about the
tutorials where you may have had a massive ah-ha moment where
everything that seemed so difficult before or obfuscated became
simple. Books or literature that changed the way you programmed from
that point forward.

Thank you for the responses. I look forward to reading others.

In effort to make a quick point about the K&R C book I do agree it is
terse. I also agree it’s more a reference for a seasoned C programmer
than tutorial for an absolute beginner. If you remove the language in
context and simply read the prose it has to be one of the most well
written efforts to distill the authors knowledge and experience on the
subject of programming to the reader.

I am interested in books that do just that.

Since some Ruby books have been mentioned

If I was on a desert island and could take one ruby book with me The
Ruby P.ming Language by Matsumoto/Flanagan would be what I would
pick. I have enjoyed reading Metaprogramming Ruby as well but Matz’s
book seems to still have the longevity value.

I tend to enjoy reading Stroustrup’s book on language creation.
Stroustrup tends to be a well skilled technical writer. I have in my
queue to read Meyers C++ books and Crockford’s Javascript: The Good
Parts.

If a great book is in digital form only I’m all ears. I also read pdf
and web only books. In some cases to pre-view it for my library and
ultimately buy the print version if I feel it’s worth owning. I read
the java version of ‘How To Think Like A Computer Scientist’ last year
solely off the pdf available drm free online. I plan to eventually
read the python and c++ version under the same title as those books
are pedagogical in lesson and theory.

So anyone responding to this thread. Please don’t feel the need to
omit e-book or lulu DIY published books or even a well written web
based resource or article. Though I am interested in books that mainly
illuminate concepts I would be interested in hearing about the
tutorials where you may have had a massive ah-ha moment where
everything that seemed so difficult before or obfuscated became
simple. Books or literature that changed the way you programmed from
that point forward.

I always plug Code Complete. The advice on solid code construction in
that book never goes out of style.

Micheal Feather’s “Working Effectively with Legacy Code” is the other
one I recommend all the time. Definitely one of those “why couldn’t I
have had this book years ago?!” books.

On Fri, Jun 10, 2011 at 12:18 AM, Stu [email protected] wrote:

What books have you read that you still admire and refer to even after
all these years? The kind of books that you would love to be
altruistic and loan to your colleague or friend but fear it wont ever
get returned?

I don’t fear not getting books back but apart from that:

Object Oriented Software Construction
Bertrand Meyer

Denkfallen und Programmierfehler (in German)
Timm Grams
http://www.amazon.com/dp/3540520392

and maybe also

Mastering Regular Expressions
Jeffrey E.F. Friedl

Kind regards

robert

K&R and The Mythical Man Month have already been mentioned. I am
personally deeply sentimental about Smalltalk/V DOS from Digitalk: My
single greatest programming epiphany.

On Fri, Jun 10, 2011 at 12:18 AM, Stu [email protected] wrote:

What books have you read that you still admire and refer to even after
all these years?

This is one book I’ve really enjoyed:

Clean Code
by Robert C. Martin

I has made think about code in a different (good) way and has given
the reasons and language to describe code I see and think it’s bad,
and also the tools to make it better (this one and also Refactoring,
by Martin F.).

Jesus.

On Fri, Jun 10, 2011 at 8:56 AM, Robert K.
[email protected] wrote:

Object Oriented Software Construction
Bertrand Meyer

At this place in the priority list I forgot:

The Mythical Man-Month
Fred Brooks

Peopleware
Tom DeMarco and Timothy Lister

Denkfallen und Programmierfehler (in German)
Timm Grams
http://www.amazon.com/dp/3540520392

and maybe also

Mastering Regular Expressions
Jeffrey E.F. Friedl
http://oreilly.com/catalog/9780596528126/

Cheers

robert

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 2011-06-10, at 9:14 AM, Markus F. wrote:

On 10.06.2011 00:18, Stu wrote:

texts you have read that have influenced you in your lifetime.

The Deadline, Tom DeMarco; “A Novel About Project Management”

Peopleware by DeMarco and Lister is a book I frequently force upon
people, it changed the way I think about work in general.

Mike


Mike S. [email protected]
http://www.stok.ca/~mike/

The “`Stok’ disclaimers” apply.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)

iEYEARECAAYFAk3yIfQACgkQnsTBwAWZE9olBwCgr1ScMWMs16eFXBT1ILlk+4Bc
BCgAnjacJpPIcyOq6ebIiDzYes+9R2gr
=KZDc
-----END PGP SIGNATURE-----

Content preview: On 10.06.2011 00:18, Stu wrote: > texts you have read
that
have influenced you in your lifetime. The Deadline, Tom DeMarco; “A
Novel
About Project Management” Definitely changed my live and perception
of many
things about software development. […]

Content analysis details: (-2.9 points, 5.0 required)

pts rule name description



-1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP
-1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%
[score: 0.0000]
X-Cloudmark-Analysis: v=1.1
cv=Nww7yNiXF4C1XGF+VcigPkOcTpD8wJaI1KQuZlH5eEk= c=1 sm=0
a=CPlwVjms4CEA:10 a=0Xf6QYx-fCIA:10 a=8nJEP1OIZ-IA:10 a=xqWC_Br6kY4A:10
a=ek4ph9vDXwduNxo7mF8A:9 a=wPNLvfGTeEIA:10
a=HpAAvcLHHh0Zw7uRqdWCyQ==:117
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Precedence: bulk
Lines: 13
List-Id: ruby-talk.ruby-lang.org
List-Software: fml [fml 4.0.3 release (20011202/4.0.3)]
List-Post: mailto:[email protected]
List-Owner: mailto:[email protected]
List-Help: mailto:[email protected]?body=help
List-Unsubscribe: mailto:[email protected]?body=unsubscribe
Received-SPF: none (Address does not pass the Sender Policy Framework)
SPF=FROM;
[email protected];
remoteip=::ffff:221.186.184.68;
remotehost=carbon.ruby-lang.org;
helo=carbon.ruby-lang.org;
receiver=eq4.andreas-s.net;

On 10.06.2011 00:18, Stu wrote:

texts you have read that have influenced you in your lifetime.

The Deadline, Tom DeMarco; “A Novel About Project Management”

Definitely changed my live and perception of many things about software
development.

I find CS books usually not that entertaining to read due there dry
technical nature (don’t understand this wrongly, I love 'em but they
serve me more as a reference), but this one I slung down like nothing.

  • Markus

I’ve been a software consultant for over 30 years and am still working
at
it…just finished an assignment at a ‘big-box’ store. Here is my list:
RDBMS [Relational Database Management Systems]:
“The Relational Model for Database Management, Version 2” by E.F. Codd
“An Introduction to Database Systems, Volumes 1 and 2” by C.J. Date
“Relational Database Selected Writings” by C.J. Date
“A Guide to DB2” by C.J. Date and Colin J. White
“DB2 Design & Development Guide” by Gabrielle Wiorkowski and David
Kull
“Principles of Database Systems” by Jeffry D. Ullman
“Relational Databases” by Chao-Chih Yang
“The Theory of Relational Databases” by David Maier
“Database System Concepts” by Henry F. Korth and Abraham Silberschatz
FP [Functional Programming]:
“Programming in Haskell” by Graham Hutton
“Learn You a Haskell for Great Good, A Beginner’s Guide” by Miran
Lipovaca
“Basic Category Theory for Computer Scientists” by Benjamin C. Pierce
OO [Object Oriented] :
“Object Technology” by David A. Taylor
“The Object Primer, Agile Model-Driven Development with UML 2.0” by
Scott
W. Ambler
“Object-Oriented Software Construction” by Bertrand Meyer
Logic:
“Prolog Programming in Depth” by Micales A. Covington, Donald Nute and
Andre Vellino
“The Schemer’s Guide” by Iain Ferguson witrh Edwared Martin and Burt
Kaufman
“Logic” by Patrick J. Hurley
“Logic, Sets & Numbers” by Roethel/Weinstein/Foley
“Introduction to Logic” by Patrick Suppes
“Programming in Prolog” by W.F. Cloksin and C.S. Mellish
“Introduction to Logic, Predicate Logic” by Howard Pospesel
“Logic for Mathmeticians” by A.G. Hamilton
“Introduction to Mathematical Logic” by Alonzo Church
“Symbolic Logic - Game of Logic” by Lewis Carroll [yes, he wrote
“Alice in
Wonderland”]
“Sets, Logic and Axiomatic Theories” by Robert R. Stoll
“Logic, Algebra and Databases” by Peter Gray
Scripting Languages:
“Programming Perl” by Larry Wall, Tom Christiansen & Randal L.
Schwartz
“Programming Ruby, The Pragmatic Programmer’s Guide” aka “The Pickaxe
Book” by Dave T. with Chad F. and Andy H.
“Agile Web D. with Rails” by Sam Ruby, Dave T. and David
Heinemeier H., etal
“Ruby on Rails 3 Tutorial” by Michael H.

My favorite language is Haskell - but I couldn’t get it to ‘go’ with TCL
or
on the Web…perhaps, I gave up on it a little too soon - it I were a
bit
younger, I probably would have continued on with it…I do feel some
regret
in leaving it…The hardest part of FP is learning Category Theory - I
gave
a reference to it, but it too ‘defeated me’ - but supposedly, you don’t
need
to know it in order to do FP. I’m working with Ruby and Rails now…but
I
may switch to F# and LINQ [and MS/Visual Studio and MS/SQL Server]…I
like
‘Ruby On Rails 3 Tutorial’ - I purchased the book and the screencasts
that
go along with it and am using a Mac [the screencast is a bit pricey
though,
about $100]. There is an O’Reilly book on F# but I haven’t read it
yet…my
first impression of the F# syntax was a bit disappointing…

I hope this helps, good luck…
Pat

----- Original Message -----
From: “Stu” [email protected]
To: “ruby-talk ML” [email protected]
Sent: Thursday, June 09, 2011 6:18 PM
Subject: Classic Computer Science Books

Well, I go back to the days when the series: “The Art of Computer
Programming” by Donald E. Knuth, was the standard and mandatory on my
school!
That was back on the mid to late '70s.

On Fri, Jun 10, 2011 at 11:33:43PM +0900, Patrick L. wrote:

Logic:

The list that followed brings up an interesting point – that logic is
an
academic subject that is (I believe) invaluable to programmers and
computer scientists, but is not a requirement in any computer science
degree program I’ve seen. I’ve only read one logic book, myself, and it
was the textbook for a symbolic logic course in college. The instructor
was, bar none, the best teacher I have ever had. The book is The Logic
Book
, by Bergmann, Moor, and Nelson; I don’t know how it compares to
other texts on the subject (as I said, I have not read any others), but
it did the job. I’d recommend, to anyone who wants to be a better
programmer, find yourself a tolerable book about symbolic logic and read
it.

Some other books that occurred to me as interesting reads that help out
with becoming a better programmer are Learning Perl (the llama book),
Intermediate Perl (the alpaca book, originally called Perl Objects,
References, and Modules
), and Seven Languages in Seven Weeks. SICP
is
an incredibly dense text that can be of great help to a sufficiently
diligent reader – though I have unfortunately not been diligent enough.
I’ve stalled out partway through both times I tried tackling it.

I might mention some more later, if more books occur to me.

…you’ll be please to know that the ‘boxed set’ of all four volumes of
“The
Art of Computer Programming” is still being sold on Amazon…

----- Original Message -----
From: “Ruby S.” [email protected]
To: “ruby-talk ML” [email protected]
Sent: Friday, June 10, 2011 10:07 AM
Subject: Re: Classic Computer Science Books

On Jun 9, 2011, at 15:18 , Stu wrote:

written texts. It’s also a very good read.
I like this category: what book(s) do you reread every year.

My annual reread book is The School of Niklaus Wirth: The Art of
Simplicity

Others I love:

Compiler Construction, Wirth
Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs
C Programming Language
The Annotated C++ Reference Manual (first and last good book on C++,
besides meyers)
Structure and Interpretation of Computer Programs
The Little Schemer, The Seasoned Schemer, (and probably Reasoned
Schemer, but I haven’t gotten through that yet).
Performance and Evaluation of LISP Systems
LISP 1.5 Programmer’s Manual
Lisp in Small Pieces
Bugs in Writing (best English book ever)
Smalltalk-80: The Language and its Implementation
Smalltalk With Style
The Design and Evaluation of a High Performance Smalltalk System (SOAR -
best fucking book on objective profiling and optimization ever written)
Lions’ Commentary on Unix
A Pattern Language: Towns, Buildings, Construction
The Timeless Way of Building
More Programming Pearls: Confessions of a Coder
Programming Pearls (ACM Press)
Writing Efficient Programs (Prentice-Hall Software Series)
Working Effectively with Legacy Code
The Pragmatic Programmer: From Journeyman to Master
Writing Solid Code: Microsoft’s Techniques for Developing Bug-Free C
Programs
Code Complete
Secrets of Consulting: A Guide to Giving and Getting Advice Successfully
More Secrets of Consulting: The Consultant’s Tool Kit
Thinking Forth
How to Write Parallel Programs: A First Course
Building Better Applications: A Theory of Efficient Software Development

Tao of Objects: A Beginner’s Guide to Object-Oriented Programming – is
where I had my OO epiphany, but it was only 1 sentence that caused
satori, so it doesn’t really count for much more than sentimental value
at this point.

On Fri, Jun 10, 2011 at 6:42 PM, Ryan D. [email protected]
wrote:

Tao of Objects: A Beginner’s Guide to Object-Oriented Programming – is where I
had my OO epiphany, but it was only 1 sentence that caused satori, so it doesn’t
really count for much more than sentimental value at this point.

I read The Tao of Objects as well. I think it’s great that it’s on
your list. Makes me not feel so old =)

Might flip through it later and maybe read a chapter or two.