Java Data Structures - Contents
A D V E R T I S E M E N T
I have gotten enough responses from people asking me
to list good references for all this info, so, here I am, trying to list everything that
is relevant. It is by no means a complete list, but it should provide the reader with
adequate reference. I will supply the name, author(s), and a very brief opinionated
description. Most book stores will let you search for the title, so, I don't think ISBN is
relevant in most cases.
Most relevant:
Introduction to Algorithms, by Thomas H. Cormen, Charles E.
Leiserson, Ronald L. Riverst. It is a rather large book, which not only covers
all the common data structures, but most common algorithms as well. A really nice book to
have as a reference.
The Art of Computer Programming Volume 1, Fundamental
Algorithms, Donald E. Knuth. This is the reference for all your computer
programming needs. I suggest getting all 3 volumes, in addition to most of Knuth's
publications.
Data Structures Using C and C++, Second Edition, by Yedidyah
Langsam, Moshe J. Augenstain, Aaron M. Tenenbaum. A very nice book, covering most
things I could think of about data structures. The code is not very readable though, and
could have been a bit clearer. Some concepts lack concrete working examples. Incidentally,
I had most of these authors as my professors for some class or another.
The Art of Computer Programming Volume 3, Sorting and
Searching, Second Edition, by Donald E. Knuth. Without an argument, this is the
BEST reference to get on sortint and searching. I don't think I used anything out of other
volumes of the series, but ALL 3 volumes are definitely worth getting. It's a classic!
Computer Algorithms, Introduction to Design and Analysis,
Second Edition, by Sara Baase. A nice book with lots of information on various
algorithms. I still think The Art of Computer Programming by Donald Knuth is much better.
Java Distributed Objects, The Authoritative Solution by Bill
McCarty and Luke Cassady-Dorion. This book is the ultimate book on OOP concepts
and distributed systems using Java. It covers CORBA, RMI, DCOM, etc. It even implements
the same program using ALL those approaches, including the plain sockets implementations!
Database System Concepts by Abraham Silberschatz, Henry F.
Korth, S. Sudarshan. The usual database book. You'll need one of these, since in
the real world, most companies require a whole lot of DB experience.
C/C++ Annotated Archives By Art Friedman, Lars Klander, and
Mark Michaelis. This book is kind of a source book. It has source for binary
trees and other interesting stuff.
Discrete Mathematics, Forth Edition, by Richard Johnsonbaugh.
A very readable book on math as it relates to computers. Covers some typical data
structures, including trees, while illustrating some interesting algorithms that use them.
I like this book mostly for it's simple illustration of some algorithms. If all books seem
too high level, this is the one to get.
Data Structures and Algorithms in Java
Michael T. Goodrich, Roberto Tamassia, 1998.
"The text focuses on applications, with numerous Java code examples and
object-oriented software design patterns. Animations illustrate data
structures and algorithms in a clear visual manner without the need for
lenghty mathematical derivations. Website devoted to the book:
http://www.wiley.com/college/cs2java."
Less relevant:
Borland C++ v4.5 Object-Oriented Programming, Forth Edition, by
Ted Faison. Don't get me wrong, I know that this book is outdated, and that
nobody in their right mind would use Borland v4.5 now, however, this book is in my opinion
the best Object Oriented Programming book I've seen. It covers C++ and most related
topics. This is not how to use Borland C++ type of a book, it's really full of Object
Oriented theory and pure C++ examples to back it up. I'd personally look for future
editions by the same author.
Artificial Intelligence, Structures and Strategies for Complex
Problem Solving, Second Edition, by George F. Luger, William A. Stubblefield.
Most of this book is fairly high level stuff, but it does show some interesting ways to
play around with tree based structures, and how they relate to games. It has lots of
different methods for tree traversal.
Practical UNIX Programming, A Guide to Concurrency,
Communication, and Multithreading, by Kay A. Robbins, Steven Robbins. This is the
book to get for system programming. The way in which it relates to this document is that
it has lots of multithreading stuff, it describes it inside out. It's also a pretty good
reference on basic networking. (well, maybe this document didn't have all that, but it's
still a good reference...)
Java 1.1, Developer's Guide, Second Edition, by Jamie Jaworski.
This is my second, and probably the last Java book. It's a good reference for all those
classes, etc., but it really has nothing new for somebody who already knows Java. No
interesting algorithms, just a systematic coverage of the language, and it's supporting
API. (hey, I needed to put in at least one Java reference into this list ;-)
Code Complete, by Steve McConnell. This books talks
about code design. How to structure code, how to plan, layout, write, test, and intergrate
your code. It is definitely a "Practical Handbook of Software Construction."
Irrelevant, but could be interesting (graphics):
Gardens of Imagination by Christopher Lampton This
book is pretty good for a total beginner in graphics. It is a bit dated though, since it
only has DOS code, which most of the time, simply doesn't run under current operating
systems. BEGINNER LEVEL
Tricks of the Game Programming Gurus, by LaMothe, Ratcliff,
Seminatore & Tyler Best Startup book I've seen. It is interesting to read,
and offers quite a bit of inspiration. However, practically speaking, this book is
outdated (some chapters could be interesting, but...) BEGINNER LEVEL
3D Game Programming With C++ by John De Goes That's
the book that taught me how to create a window, under Windows, set palette, etc., however,
other than that, it has nothing new. It does cover quite a bit of material, but for some
strange reason, I didn't find it useful. You do need to know C++ before getting this book
though. LOWER INTERMEDIATE LEVEL.
Computer Graphics, Principles and Practice, Second Edition in
C, Foley, van Dam, Feiner, Hughes. This is the definitive book on Computer
graphics. If you need a book that has everything, then get this one!
Image Processing In Java by Douglas A. Lyon. Includes
lots of cool algorithms for all kinds of fun image effects. Very readable and easy to
follow. (I actually read the whole thing in an evening.)
Algorithmic Geometry by J-D Boissonnat and M. Yvinec.
A very technical book on algorithms like generating convex hulls, triangulating, and other
fun things. Note that this is not a general type of Graphics book, it's a very technical
math-like book.
Matrix Computations, Third Edition, by Gene H. Golub and
Charles F. Van Loan. Another very techy book. Anything you ever wanted to know
about Matrix manipulation on a computer. It tries to be a programming book, but in my
eyes, it's a math book.
Computer Graphics by Roy A. Plastock and Gordon Kalley.
A Schaum's Outline series book. Covers all the required graphics concepts. A bit brief for
my taste though. The book is very cheap though (23 Canadian Dollars), so, if you're on a
tight budged, this might be the one to get. I always tend to get techy Schaum's Outlines,
they're cheap, concise, and attempt cover the subject more or less completely.
ZEN of Gaphics Programming, by Michael Abrash Very
interesting, and the most useful book I read at the time (when it came out). It has code,
and is quite inspirational. HIGHER INTERMEDIATE LEVEL
Michael Abrash's Graphics Programming Black Book Special
Edition This book contains full text of several other books, including most of
the text from ZEN of Graphics Programming. It is a bit more interesting book. It's final
chapters talk quite a bit about the theory behind Quake engine & BSP trees. HIGHER
INTERMEDIATE LEVEL
Computer Graphics, C version, Second Edition, by Donald Hearn,
M. Pauline Baker One of those text-book type books. It covers everything you
could possibly think up, but at times is quite brief. It's a good reference to have though
(in case you forget how to do gouraud shading or something). ADVANCED LEVEL
OpenGL Programming Guide, Third Edition, The Official Guide To
Learning OpenGL. Best OpenGL reference I've seen. Has most of the stuff anybody
would need. Nothing system specific though, which is good.
Digital Typography, by Donald E. Knuth. A nice
introduction and description of the field of making pretty text. Briefly describes TeX,
Metafont, and other Knuth's creations, along with a few algorithms on aligning text, and
other fun stuff found in TeX.
Pre-calculus Mathematics, 3rd Edition, by Hungerford, Mercer Most
of the problems that come up in graphics are mathematical ones. This book might seem like
a joke to some math major, but that's the book which has most of the equations for
graphics programming. (like finding the determinant of an NxN matrix ;-) BEGINNER LEVEL
Totally Irrelevant, but Might be Interesting (theory):
Introduction to Languages and the Theory of Computation, Second
Edition, by John C. Martin. This book goes through quite a bit of theory behind
scanners, parsers, and other interesting topics. This is the type of book which
programmers wanting to design languages and write compilers use. ADVANCED LEVEL
Crafting a Compiler with C, by Charles N. Fischer, Richard J.
LeBlanc Jr. From this book you'll learn the basics of compiler design from the
ground up. No previous knowledge necessary. However, I'd recommend reading the above book
before, since that will make it a LOT easier for you to comprehend some of the ideas. Note
that it has a few bugs in the LR parsing example, nothing wrong with algorithms as far as
I know. ADVANCED LEVEL
Advanced Compiler Design and Implementation, by Steven S.
Muchnick. A lot more detailed & more practical book than the above one.
However, that advanced word in the title is not a joke. The book does jump right
into things like optimization, without fully covering compiler basics. Basically, if
you've written a compiler and want to make it run faster, or port it, etc., that's the
book to get. REALLY ADVANCED LEVEL
Lex & Yacc, by John R. Levine, Tony Mason, and Doug Brown.
This O'Reilly's reference is one of the best descriptions (with examples) of Lex and Yacc
I have yet to come across.
Programming Languages, Concepts & Constructs, by Ravi
Sethi. This book is too simple for anybody who read at least one of the books
mentioned above. It could be interesting as a history book; like which computer language
evolved out of which, and the general historical significance of events which led to the
development of particular languages, etc.
The Data Compression Book, Second Edition, by Mark Nelson and
Jean-Loup Gailly. A rather nice, slow paced introduction to data compression
using all kinds of algorithms.
Numerical Recipes in C, The Art of Scientific Computing, Second
Edition, by William H. Press, William T. Vetterling, Saul A. Teukolsky, Brian P. Flannery.
This book, along with The Art of Computer Programming Volume 2, by Donald E.
Knuth. has just about every single numerical algorithm most people can think of.
For a very simple introduction to cryptography, try getting Applied
Cryptography by Bruce Schneier. Note that some people claim Numerical Recipes has
a few bugs in it; see http://math.jpl.nasa.gov/nr/nr.asp
for more information. ADVANCED LEVEL
An Introduction to The Theory of Numbers, Fifth Edition, by
Ivan Niven, Herbert S. Zuckerman, Hugh L. Montgomery. This book has everything
you'll ever need to know about numbers. So far, this book has the best description of RSA
I've ever seen. Very technical, but that's exactly what makes this book good.
Simulation, Second Edition, by Sheldon M. Ross. A
general book on simulations. Covers algorithms on generating random numbers, sampling
various distribution functions, etc.
Irrelevant (General):
Data And Computer Communications, Fifth Edition, by William
Stallings. A nice book on general Networking concepts. Very technical when it
comes to hardware etc., but still fun. Gives the basics of lots of network protocols,
including a fairly good description of SMTP.
Operating System Concepts, Fifth Edition, by Abraham
Silberschatz, and Peter Baer Galvin. General purpose Operating Systems book. Has
most of the relevant algorithms, etc. Offers nice descriptions of various actual existing
operating systems, including UNIX, Linux, and Windows NT.
UNIX System Administration Handbook, Second Edition, by Evi
Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein. An indispensable book on
System Administration; best that I've seen!
UNIX System V, A practical Guide, Third Edition, by Mark G.
Sobell. A fairly descriptive book of the basics of UNIX. Simple and easy to
follow, with nice examples of most of the interesting stuff. If you want to learn shell
programming, this is the book to get.
Mastering Perl 5, by Eric C. Herrmann. A complete
reference for Perl. I think that said it all.
COBOL, From Micro to Mainframe, Third Edition, by Robert T.
Grauer, Carol Vazquez Villar, Arthur R. Buss. Nicely covers this arcane language,
with more or less real world examples. Lots of code, lots of pages, but COBOL always
tended to be wordy.
Visual Basic 5, by Alan Eliason and Ryan Malarkey.
Since I put a COBOL book on this list, it's only fair that I put a Visual Basic book as
well.
Programming and Customizing the PIC Microcontroller by Mike
Predko. A simple description of what is involved in programming and experimenting
with microcontrollers. Truthfully, when it came to actually writing code for one of these,
the PIC data sheet proved a lot more useful than this book. This book is still a nice
kick-start if you really have no idea what's going on.
This is just about one shelf worth of books (I'm not
gonna go through another one...) One thing I would like to mention is that you should
always also get a system programming book as well. For example, if you are doing
programming under WindowsNT, you should get something like Windows NT4 Programming
from the Ground Up by Herbert Schildt. Or something similar. It does help to know how
the underlying operating system works.
Back to Table of Contents
A D V E R T I S E M E N T
|
Subscribe to SourceCodesWorld - Techies Talk |
|