The absolute, bar none, best book I own is "Data Structures" by Reingold and
Hansen. It contains mostly mathmatically proven "best algorithms", or
"standard time-proven algorithms" at the least. These particular algorithms
are language independent, and are used over and over and over again in the
real world. Full chapters each are given to lists (graphs & trees, doubly
linked lists), searching, sorting, and memory management. While the
algorithms are presented in language independent terms, the pseudo code they
use is similar to C or PL/1. Unfortunately *sigh* many times these days I've
seen programmers write cocktail sorts, being that is the extent of their
sorting algorithm skills.
Interesting to note, their N-way polyphase sort-merge is at the heart of the
"SELECT" statement in Pick (Prime Information, Universe, etc. etc.). This
book is simply put, the heart of complex software design. Their algorithms
for tree/network traversal made it into the critical path determination code
I wrote for a construction package that was later used to build some major
landmarks in St. Louis. The programmer who wrote the initial draft, not
using the above standard tree traversal algorithms, his code took about 24
hours to run and calculate the critical path and backward/forward float
times. He was a very good programmer, but not formally compsci trained. I
changed his internal algorithm to the one used in the above book, and it
went down to about 20 minutes :) It's ALL about the algorithm.
Another extremely good standard book is "Compilers: Principles, Techniques,
and Tools" by Aho, Sethi, and Ullman. This book is very similar to the above
in quality and material coverage - albeit obviously targeted at compiler
design techniques, lexical and syntax analysis, symbol table generation,
etc. If you're into compilers, this is "The Book". Even if you're NOT in
to
writing language processors, the algorithms in this book are very germane to
general computer programming.
Lastly, the third book on the "hallowed" section of my bookshelf is "The
Design of the Unix Operating System", by Bach. While this book is clearly
targeted at unix internals, again, the algorithms it presents are timeless
and used in many more things than just OS design.
For C programming, I have no good suggestions. There was one book that
finally made it "click" for me, but I can't remember the name. The book
I'm
thinking of made a point of starting with only the built in statements of C
(there's only about 11). Then they went into pointers and functions much
later. Most books I tried first hit you with pointers and library functions
way too early, scaring people off IMHO.
My own two millidollars worth.
Jay West
----- Original Message -----
From: "Richard A. Cini" <rcini(a)optonline.net>
To: "CCTalk (E-mail)" <cctalk(a)classiccmp.org>
Sent: Wednesday, December 01, 2004 8:45 PM
Subject: OT: good CS textbooks for a DIYer
Hello, all:
I'm looking for recommendations on CS textbooks for myself...I'm
embarking on sort of a DIY CS degree :-)
Anyway, if anyone could recommend decent first-year and/or
second-year books on algorithyms and data structures in C/C++, I would
appreciate it.
Thanks.
Rich
Rich Cini
Collector of classic computers
Build Master for the Altair32 Emulation Project
Web site:
http://highgate.comm.sfu.ca/~rcini/classiccmp/
/************************************************************/