views:

126

answers:

5

I'd like to start off by saying that I have no formal training in computer science. I have several years of programming experience but I'm entirely self-taught. Additionally, I have a relatively good grasp of common algorithms and their performance (e.g., time vs. space) characteristics.

Since I lack formal training, however, I feel like I might (and most likely do) have knowledge gaps when it comes to this subject (and others, of course).

I would therefore sincerely appreciate any book recommendations that cover this subject from a beginners* point of view.

NOTE: I realize that this question is a little subjective, but I really don't know of any other community with such a prevalent level of expertise among the member population; hence my asking here.


*I'd like to [re-]start from the basics to make sure I understand all the fundamentals.

A: 

This may not be applicable to your problem domain, but for scientific computing, the classic Numerical Recipes includes discussion of time/space complexity in a very practical vein (as well as discussion precision, numerical stability, et al) and is very smart-beginner accessible.

It is, however, not a general treatment of the field of time/space complexity.

Carl
+1  A: 

For an intro, if you know c++ (or want to learn) I'd suggest Sedgewick's Algorithms in C++

He also has a Java version

These two are great, but slightly heavy:

klochner
CLR is legendary, but note it is more than 'slightly heavy' for someone without a formal background.
Michael Easter
ok, maybe he should put these on his list for next year :)
klochner
and btw, you dated yourself by dropping the "S"
klochner
+1  A: 

I recommend Programming Pearls. It doesn't have the math rigor of academic texts, and it is not solely dedicated to algorithm analysis, but it is a classic text and written by a master. It may not satisfy your goal, but it is a very good bridge to other texts, and you'll be a better developer after working through it.

Michael Easter
and it's a fun read.
klochner
A: 

A very good book about introduction (and more) to algorithm:

Introduction to Algorithms By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

I have worked with this book at my university to learn algorithm and It's very interesting to learn basis of algorithm and to start to study it in depth.

Yannick L.
A: 

Algorithmics by David Harel. This has the best and most clear discussion of complexity, problem classes, and NP-Completeness of any text I've found. Often overlooked, extremely accessible, and an essential text before plunging into Cormen, especially for those without formal CS training.

Grembo