HN Books @HNBooksMonth

The best books of Hacker News.

Hacker News Comments on
The Algorithm Design Manual

Steven S Skiena · 14 HN comments
HN Books has aggregated all Hacker News stories and comments that mention "The Algorithm Design Manual" by Steven S Skiena.
View on Amazon [↗]
HN Books may receive an affiliate commission when you make purchases on sites after clicking through links on this page.
Amazon Summary
This newly expanded and updated second edition of the best-selling classic continues to take the "mystery" out of designing algorithms, and analyzing their efficacy and efficiency. Expanding on the first edition, the book now serves as the primary textbook of choice for algorithm design courses while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students. The reader-friendly Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over analysis. The first part, Techniques, provides accessible instruction on methods for designing and analyzing computer algorithms. The second part, Resources, is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations and an extensive bibliography. NEW to the second edition: • Doubles the tutorial material and exercises over the first edition • Provides full online support for lecturers, and a completely updated and improved website component with lecture slides, audio and video • Contains a unique catalog identifying the 75 algorithmic problems that arise most often in practice, leading the reader down the right path to solve them • Includes several NEW"war stories" relating experiences from real-world applications • Provides up-to-date links leading to the very best algorithm implementations available in C, C++, and Java.
HN Books Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this book.
> Also, adding to the fact that I am entirely self taught I sometimes wonder maybe I am missing out on a lot of theoretical stuff they teach in a CS degree.

A CS degree is useful for a software engineer, but most of what you learn is only tangential to software engineering. Many of the best engineers are self taught.

That said, some of the basic stuff from CS is pretty useful. I'd definitely encourage you to learn data structures and algorithms. Just pick up a good textbook and go through it! (I like to recommend this one: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...).

Another suggestion I have is to seriously think about why you want to do work in lower level stuff. The large majority of jobs are in web development right now, so trying to avoid that really limits your options. There's really nothing more sophisticated or interesting going on at the low levels. I've seen a lot of people come into a software engineering career with preconceptions about exactly what sort of work they want to do, and at the end of the day, I don't think those preconceptions have made any of them happy.

whoami_nr
Again, I didn't start pursuing CS in college to get employed. I started learning more about computers, learnt to code websites and then went back to figuring out how a computer works. However, I haven't figured out which area of the stack to develop an expertise in.

I will definitely check that book out. Thanks

Feb 16, 2017 · Apocryphon on Algorithms
The Algorithm Design Manual by Skiena is pretty great.

https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...

It's nearly a third of the length of CLRS, and half of Sedgwick. Much more precise, yet offers more in that it talks about common problem solving uses cases with data structures and algorithms, rather than writing going through the theoretical proofs behind them.

chillaxdude
I really love the war problems.
I'd say non-programming fundamentals took about two months at about 4-6 hours a day, with the majority of that dedicated to algorithms and data structures.

I took these two OCW courses: https://ocw.mit.edu/courses/electrical-engineering-and-compu...

https://ocw.mit.edu/courses/electrical-engineering-and-compu...

And worked my way through these two books: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...

https://www.amazon.com/Algorithms-Robert-Sedgewick-ebook/dp/...

I wrote out my solutions on a whiteboard or pen and paper before typing them into a computer.

Outside of A & DS, I spent some time on operating systems and networking in general. A little bit of probability, but no hardcore discrete math.

There are swaths of areas which I now cover at a slower pace as time allows; compilers, AI, etc.

slinger
Thank you for your reply. I'm currently studying CS fundamentals as well. I'm taking an excellent operating system class from https://www.ops-class.org and I recommend to everyone that wants to learn this stuff.
fsloth
What makes you categorize algorithms as non-programming? Isn't it like saying rhythm and melody are non-musical concepts?
mpwoz
Not OP, but maybe "coding" is a better term: they are language-agnostic fundamentals that don't change as quickly as the tools and frameworks we use daily as "programmers"
questionr
just to confirm, you completed BOTH MIT algorithm courses and BOTH algorithm books, in the span of 2-months, including completing all the exercises/algorithms?

that seems like an incredibly short amount of time given the content. But if true, congrats! and please let me know your secret!

I learned programming without a computer in the 90s with Kernigan & Ritchie "C Programming Language", one of the best coding books ever written:

https://www.amazon.com/Programming-Language-Brian-W-Kernigha...

I'd also learn SICP: https://www.amazon.com/Structure-Interpretation-Computer-Pro...

and algorithms from either CLRS https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press... or Skiena Algorithm Design https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...

corysama
Along with SICP, The Little Schemer would be a great book to work through on paper. https://mitpress.mit.edu/books/little-schemer

Once that is worked through, Godel, Escher, Bach would be an especially entertaining and enlightening read.

CLRS is quite 'academic' and requires good understanding of mathematics. It's a great book, but not a good one for beginners, imo. It will be difficult as self study for first timers. You can start with Datastructures and Algorithm Analysis in C by M. A. Weiss[0]. One more alternative is The Algorithm Design Manual by S. Skiena[1]. It's also good and focuses more on algorithm, implementation (as opposed to math-y stuff of CLRS). If I were you, I would get both the books and read alternatively. Don't miss out on exercises, they are very important.

I also suggest you to join this Coursera course, Algorithms: Design and Analysis by Tim Roughgarden[2]. Currently the course is open, so you can sign up for classes. The course is offered in two parts[3], complete both of them.

Once you are comfortable with basic concepts start solving questions/puzzles online on sites like SPOJ[4], UVa[5], (YC-funded) HackerRank[6]. You could try TopCoder[7] also, but the questions are bit difficult. Hope this helps.

PS - You should study math, because it is important in Algorithms Analysis. You could try reading required parts of Concrete Mathematics by Knuth[8] or as you come across new concepts, Google and understand them.

[0] - http://www.amazon.com/dp/8177583581

[1] - http://www.amazon.com/dp/1848000693

[2] - https://www.coursera.org/course/algo

[3] - https://www.coursera.org/course/algo2

[4] - http://www.spoj.com

[5] - http://uva.onlinejudge.org

[6] - http://hackerrank.com

[7] - http://www.topcoder.com

[8] - http://www.amazon.com/dp/0201558025

brudgers
I would also recommend Roughgarden's Coursera classes, however, I would strongly recommend waiting for a live session.

A book I think is informative from a practical perspective is Algorithms in a Nutshell from O'Reilly Press. As always with Amazon I would look for a used copy.

avinassh
But no need to wait at this moment, as class is live. However I also agree that live session is recommended and actually fun. Some of the Community TAs are really good, which one will miss if attended non-live version of class.
It looks like Amazon UK does have a "look inside" preview:

http://www.amazon.co.uk/gp/product/1848000693/

Code Complete 2 [1] was one of the first coding books I've read. As with anything else, it's good to look around (HN is a good place) for people who have problems with the book. I think I learn as much reading the commentary people make about books like that as I do from the book itself.

I think I've listened to every podcast on software engineering radio a few times [2]. The older ones are especially nice because they usually pick a specific topic and cover the high points. I liked that I could listen to it while I was driving, or otherwise not in front of a computer.

It's specific, but Javascript: The Good Parts is probably the most used book I have on my shelf. It has such a perfect amount of usable information in it. It's pretty great. Again, it's definitely worth looking up critiques and counterpoints.

I've also got Introduction to Algorithms, which I use as a reference, sometimes. I switched over to The Algorithm Design Manual [5] after I saw it referenced in an older Steve Yegge post [6]. I read through the intro and it seemed like a book that would be more appropriate from an autodidactic standpoint. I really have no idea if that's going to pan out, since I'm not that far into it, but we'll see, for sure. Doesn't kill me to have an extra algorithms book laying about, though, and I've always got intro to algorithms for cross reference. I've found that I really need to have as many sources available as possible when I'm learning alone. Usually I don't get something until the fifth person describes it from the tenth different angle.

That's most of what I can think of off hand. I really enjoyed The Joy of Clojure [7], though haven't checked out the newer version. Programming Collective Intelligence [8] is a fun book, and is what made me want to go back down the maths route to get more into machine learning.

And of course habitually reading hacker news for an hour or three every night :)

So that's my totally inexpert list of random stuff that I enjoy

[1] http://www.amazon.com/Code-Complete-Practical-Handbook-Const... [2] http://www.se-radio.net/ [3] http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockfor... [4] http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme... [5] http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/... [6] http://steve-yegge.blogspot.com/2008/03/get-that-job-at-goog... [7] http://www.amazon.com/Joy-Clojure-Michael-Fogus/dp/161729141... [8] http://www.amazon.com/Programming-Collective-Intelligence-Bu...

Try Skiena's "Algorithm Design Manual" [0]. Another nice book would be "Programming Pearls" [1].

[0] http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/... [1] http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley...

The TAOCP[1] is the reference for all the types of algorithms it covers, the Cormen book[2] is a reference for its breadth and the Algorithm Design Manual[3] is quite nice to learn how to design your own.

[1]: http://www-cs-faculty.stanford.edu/~uno/taocp.html

[2]: http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...

[3]: http://www.amazon.com/dp/1848000693

You may want to look at some static code analysis tools for 1 and 2:

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_a...

From my very limited understanding, the powerful ones are seemingly only in reach for large enterprises [1].

With regard to number 3, In C# and Java, resharper/IntelliJ has partially automated refactoring tools. I'm sure similar tools exist for other languages.

However, I think going down this route is substantially more work unless you are inheriting a code base. I would aim to learn some of the design patterns basics[2], perhaps read "The Algorithm Design Manual" [3], and aim to have a clear idea of how to design your latest algorithm from the offset.

[1] - http://semmle.com/solutions/what-we-do/index.html

[2] - http://en.wikipedia.org/wiki/Design_Patterns

[3] - http://www.amazon.co.uk/Algorithm-Design-Manual-Steven-Skien...

I'm kind of surprised the Skiena "The Algorithm Design Manual" didn't make it. http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/...
Jan 25, 2010 · samdk on Algorithms course material
I'll second Intro to Algorithms, which has been mentioned. It's what I used in my algorithms class and it's quite comprehensive. (It will also take you a while to get through.)

I've also heard The Algorithm Design Manual recommended, although I haven't read it and don't own a copy. http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/...

I recommend Skiena's "The Algorithm Design Manual (2nd ed)": http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/...
Here's the second edition from 2008: http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/...
pkrumins
Thanks! I did not know there was the 2nd edition!
HN Books is an independent project and is not operated by Y Combinator or Amazon.com.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.