PDA

View Full Version : good book on algorithm design



oldmanstan
July 14th, 2007, 04:06 AM
apologies if this (or something similar) has been posted before, i searched and didn't find what i wanted...

i'm looking for a good, accessible book on actually designing algorithms. i really don't care what language (if any) it uses. i don't want it to be too intensely mathematical, i can do a reasonable amount of calculus and linear algebra but i don't want to slog through proofs and overly complex math.

i've never had any formal training in programming but i "know" several languages both scripted and compiled. what i'm looking for i guess is a book that covers techniques and processes for designing algorithms to solve problems, how to use a programming language effectively.

again, math is fine but i'm not looking for a "math book".

honestly i'm not even sure that such a thing exists, a search of amazon yielded little and the books i've found elsewhere have been focused on specific mathematical issues.

anyway, suggestions would be appreciated...

xtacocorex
July 14th, 2007, 04:26 AM
A study of mathematics and how to solve those problems is analogous to algorithm design IMO.

Say you have to write a code to capture 1D shocks using Euler. I would research the method and how it is solved by hand or numerically just to mimic it in code.

I learned to program for numerical methods, so to me that's the only type of programming. (I know it isn't, but I don't usually code anything besides stuff involving lots of math)

llanitedave
July 14th, 2007, 05:36 AM
Not algorithms for solving specific narrow problems, but as the title suggests Design Patterns: Elements of Reusable Object-Oriented Software (http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612). I found my copy, oddly enough, in pristine condition, under a pine tree twenty feet off of a dirt road in a remote mountain valley. If that's not karma, I don't know what is.

It's not language specific.

Wybiral
July 14th, 2007, 06:14 AM
I found my copy, oddly enough, in pristine condition, under a pine tree twenty feet off of a dirt road in a remote mountain valley.

That's pretty awesome.

xtacocorex
July 14th, 2007, 06:18 AM
I found my copy, oddly enough, in pristine condition, under a pine tree twenty feet off of a dirt road in a remote mountain valley.
Are you sure the book is real? :)

pmasiar
July 14th, 2007, 03:46 PM
Design-Patterns is good, but it applies mostly to C++/Java class of languages (statically typed). In dynamically typed languages so tricks are trivial or unnecessary. Functional languages have rather different approaches, too.

It is hard to write good cross-language book. Unfortunately, programming art is not advanced enough (or too advanced). Different languages are designed/optimized for different classes of problems, and solving problems outside of target area is clumsy (or at least look clumsy in code). So IMHO you are better off deciding which language to learn first.

Because you are street fighter, IMHO you may consider to go for rapid app development languages (big companies using "big" languages like Java and C++ will have hard time to overlook your lack of formal degrees and certifications). Python + TurboGears + AJAX, learn to build web sites in weeks instead of months.

OK, now direct answer to your question: :-)
here (http://learnpython.pbwiki.com/#DataStructures) in my wiki are couple of links to "algorithms only" books. You can also look around wikibooks and may find some more.

the_unforgiven
July 14th, 2007, 05:02 PM
Slightly off-topic, but I suggest you read this:
http://extreme.infomagic.net/static/knuth_turingaward.pdf

It's the speech delivered by Donald Knuth (http://en.wikipedia.org/wiki/Donald_Knuth) when he received ACM Turing Award in 1974. It revolves around the idea "Computer Programming as Art".

It's quite interesting and helpful ;)

Now, as for the algorithm books, this one is a standard book:
http://en.wikipedia.org/wiki/Introduction_to_Algorithms

hod139
July 14th, 2007, 07:32 PM
Now, as for the algorithm books, this one is a standard book:
http://en.wikipedia.org/wiki/Introduction_to_Algorithms


The CLRS book is very good and I also recommend it. It uses pseudocode for all the algorithms so your first requirement is satisfied. However, this book is fairly heavy in the math, mostly discrete math and graph theory. But, as pointed out by xtacocorex, any good algorithms book will be heavy in the math. This is because algorithm design in computer science is interested in describing how fast/good and algorithm is, and how to design good algorithms. This analysis requires a bit of math.

earobinson
July 14th, 2007, 07:39 PM
Jon Kleinberg and Éva Tardos: Algorithm Design (2006) by Pearson Education, ISBN: 0-321-29535-8
Cormen, Leiserson, Rivest, Stein: Introduction to Algorithm (2nd edition) McGraw-Hill (2001), ISBN: 0-07-013151-1

oldmanstan
July 14th, 2007, 08:56 PM
thank you all!

i will have to sift through the recommendations to see which one(s) work for me.

Mirrorball
July 15th, 2007, 03:10 AM
I also recommend Cormen's book, but it is certainly a "math book."

Houman
July 15th, 2007, 08:54 AM
how about the classics by Donald Knuth?

the The Art of Computer Programming series is probably one of the best known works in this subject;

Houman

Mathiasdm
July 15th, 2007, 12:26 PM
Algorithms in C++ (http://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882) is the one I've used to study algorithms. It's a great book. I'm thinking about buying the second one too.

And I know, it says 'in C++', but these are algorithms that you can change yourself, and use in other languages.

the_unforgiven
July 15th, 2007, 01:08 PM
how about the classics by Donald Knuth?

the The Art of Computer Programming series is probably one of the best known works in this subject;

Houman
Yes, but it's heavily influenced by mathematics - and the primary requirement of the OP was "less math" ;)
That is why I did not bother recommending it.

grado
July 15th, 2007, 08:17 PM
Stan, the book you are looking for might be the one by Kleinberg and Tardos
http://www.aw-bc.com/info/kleinberg/

While Corman and Knuth are timless, this is considered easy to follow.

oldmanstan
July 16th, 2007, 09:56 AM
Stan, the book you are looking for might be the one by Kleinberg and Tardos
http://www.aw-bc.com/info/kleinberg/

While Corman and Knuth are timless, this is considered easy to follow.

based on the description that one does look interesting, perhaps even in conjunction with one of the others...

also, to some of the other helpful posters (thank you btw) i realize i did specify that i didn't want it to be too "mathy" but i also recognize that in the end the math is necessary. i just want to dip my toe in for a bit and get a feel for the material before i dive in head first :)

so to that effect, all suggestions are helpful, even more intense ones...

see, i tried searching the online catalog at my library but very little comes up for "algorithms", even searching the whole system (basically every uni. library in illinois)... i mean, i get tons of results but they're impossible to sift through since the catalog info doesn't generally include a synopsis unless the book was published very recently

in any event, thanks for all the suggestions, i have to start checking some of these out this week and sifting to pick one to read through

earobinson
July 16th, 2007, 07:08 PM
let us know what you pick!

oldmanstan
July 23rd, 2007, 11:12 PM
so far i've gotten a chance to look at 2 of the suggested books...

design patterns - the first 2 chapters were very interesting, i learned some things about oop that hadn't crossed my mind previously. the actual "patterns" though are sort of beyond me at this point though. i guess they're too practical for lack of a better word :)

algorithms in c++ - this one has me interested, the first chapter dives right into designing an actual algorithm (albeit a pretty simple one) and rather than just presenting the "best" way to solve the problem it steps you through the whole process of arriving at a method that will satisfy demanding requirements. this is useful because i'm getting more of a feel for how things are actually done without being too practical (business-ish hehe). it seems more abstract than the design patterns book so i think i'm going to muddle through the rest of it.

thanks everyone who made suggestions!