Skip to content
HomeVideosBooks
AllTopicsTrends
BlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    Cover of Distributed algorithms

    Distributed algorithms

    Nancy A. Lynch · 1996

    In Distributed Algorithms, Nancy Lynch provides a blueprint for designing, implementing, and analyzing distributed algorithms. She directs her book at a wide audience, including students, programmers, system designers and researchers. Distributed Algorithms contains the most significant algorithms and impossibility results in the area, all in a simple automata-theoretic setting. The algorithms are proved correct, and their complexity is analyzed according to precisely defined complexity measures. The problems covered include resource allocation, communication, consensus among distributed processes, data consistency, deadlock detection, leader election, global snapshots, and many others. The material is organized according to the system model - first by the timing model and then by the interprocess communication mechanism. The material on system models is isolated in separate chapters for easy reference. The presentation is completely rigorous, yet is intuitive enough for immediate comprehension. This book familiarizes readers with important problems, algorithms, and impossibility results in the area: readers can then recognize the problems when they arise in practice, apply the algorithms to solve them, and use the impossibility results to determine whether problems are unsolvable. The book also provides readers with the basic mathematical tools for designing new algorithms and proving new impossibility results.

    Computer ScienceSystems & OSProgramming
    Open LibraryAmazon
    Stats for nerds
    3recommend
    6mentions
    6people
    2012–2024years
    50% recommend50% neutral

    Mentions per year

    2012201420162018202020222024

    What Hacker News says

    1. sriram_malharOct 2019
      Oh yes. Grad school is all reading. I recall reading these books in their entirety.

      Security Engineering. Ross Anderson

      The Formal Semantics of Programming Languages. Glynn Wynskell.

      Communicating Sequential Processes. Tony Hoare. This book is surprising in its compactness and lucidity.

      Pi Calculus. Robin Milner.

      Semantics With Applications. Hanne Riis Nielson

      On Concurrent Programming. Fred Schneider.

      Specifying Systems with TLA+. Leslie Lamport.

      Distributed Algorithms. Nancy Lynch.

      Reliable Distributed Computing. Ken Birman and Robert Van Renesse.

      I'm sure I'll recall more as soon as I hit "reply".

      thread
    2. todd8Oct 2016
      Depending on your level of programming ability, one algorithm a day, IMHO, is completely doable. A number of comments and suggestions say that one per day is an unrealistic goal (yes, maybe it is) but the idea of setting a goal and working through a list of algorithms is very reasonable.

      If you are just learning programming, plan on taking your time with the algorithms but practice coding every day. Find a fun project to attempt that is within your level of skill.

      If you are a strong programmer in one language, find a book of algorithms using that language (some of the suggestions here in these comments are excellent). I list some of the books I like at the end of this comment.

      If you are an experienced programmer, one algorithm per day is roughly doable. Especially so, because you are trying to learn one algorithm per day, not produce working, production level code for each algorithm each day.

      Some algorithms are really families of algorithms and can take more than a day of study, hash based look up tables come to mind. First there are the hash functions themselves. That would be day one. Next there are several alternatives for storing entries in the hash table, e.g. open addressing vs chaining, days two and three. Then there are methods for handling collisions, linear probing, secondary hashing, etc.; that's day four. Finally there are important variations, perfect hashing, cuckoo hashing, robin hood hashing, and so forth; maybe another 5 days. Some languages are less appropriate for playing around and can make working with algorithms more difficult, instead of a couple of weeks this could easily take twice as long. After learning other methods of implementing fast lookups, its time to come back to hashing and understand when its appropriate and when alternatives are better and to understand how to combine methods for more sophisticated lookup methods.

      I think you will be best served by modifying your goal a bit and saying that you will work on learning about algorithms every day and cover all of the material in a typical undergraduate course on the subject. It really is a fun branch of Computer Science.

      A great starting point is Sedgewick's book/course, Algorithms [1]. For more depth and theory try [2], Cormen and Leiserson's excellent Introduction to Algorithms. Alternatively the theory is also covered by another book by Sedgewick, An Introduction to the Analysis of Algorithms [3]. A classic reference that goes far beyond these other books is of course Knuth [4], suitable for serious students of Computer Science less so as a book of recipes.

      After these basics, there are books useful for special circumstances. If your goal is to be broadly and deeply familiar with Algorithms you will need to cover quite a bit of additional material.

      Numerical methods -- Numerical Recipes 3rd Edition: The Art of Scientific Computing by Tuekolsky and Vetterling. I love this book. [5]

      Randomized algorithms -- Randomized Algorithms by Motwani and Raghavan. [6], Probability and Computing: Randomized Algorithms and Probabilistic Analysis by Michael Mitzenmacher, [7]

      Hard problems (like NP) -- Approximation Algorithms by Vazirani [8]. How to Solve It: Modern Heuristics by Michalewicz and Fogel. [9]

      Data structures -- Advanced Data Structures by Brass. [10]

      Functional programming -- Pearls of Functional Algorithm Design by Bird [11] and Purely Functional Data Structures by Okasaki [12].

      Bit twiddling -- Hacker's Delight by Warren [13].

      Distributed and parallel programming -- this material gets very hard so perhaps Distributed Algorithms by Lynch [14].

      Machine learning and AI related algorithms -- Bishop's Pattern Recognition and Machine Learning [15] and Norvig's Artificial Intelligence: A Modern Approach [16]

      These books will cover most of what a Ph.D. in CS might be expected to understand about algorithms. It will take years of study to work though all of them. After that, you will be reading about algorithms in journal publications (ACM and IEEE memberships are useful). For example, a recent, practical, and important development in hashing methods is called cuckoo hashing, and I don't believe that it appears in any of the books I've listed.

      [1] Sedgewick, Algorithms, 2015. https://www.amazon.com/Algorithms-Fourth-Deluxe-24-Part-Lect...

      [2] Cormen, et al., Introduction to Algorithms, 2009. https://www.amazon.com/s/ref=nb_sb_ss_i_1_15?url=search-alia...

      [3] Sedgewick, An Introduction to the Analysis of Algorithms, 2013. https://www.amazon.com/Introduction-Analysis-Algorithms-2nd/...

      [4] Knuth, The Art of Computer Programming, 2011. https://www.amazon.com/Computer-Programming-Volumes-1-4A-Box...

      [5] Tuekolsky and Vetterling, Numerical Recipes 3rd Edition: The Art of Scientific Computing, 2007. https://www.amazon.com/Numerical-Recipes-3rd-Scientific-Comp...

      [6] https://www.amazon.com/Randomized-Algorithms-Rajeev-Motwani/...

      [7]https://www.amazon.com/gp/product/0521835402/ref=pd_sim_14_2...

      [8] Vazirani, https://www.amazon.com/Approximation-Algorithms-Vijay-V-Vazi...

      [9] Michalewicz and Fogel, https://www.amazon.com/How-Solve-Heuristics-Zbigniew-Michale...

      [10] Brass, https://www.amazon.com/Advanced-Data-Structures-Peter-Brass/...

      [11] Bird, https://www.amazon.com/Pearls-Functional-Algorithm-Design-Ri...

      [12] Okasaki, https://www.amazon.com/Purely-Functional-Structures-Chris-Ok...

      [13] Warren, https://www.amazon.com/Hackers-Delight-2nd-Henry-Warren/dp/0...

      [14] Lynch, https://www.amazon.com/Distributed-Algorithms-Kaufmann-Manag...

      [15] Bishop, https://www.amazon.com/Pattern-Recognition-Learning-Informat...

      [16] Norvig, https://www.amazon.com/Artificial-Intelligence-Modern-Approa...

      thread
    3. mjbSep 2013
      That depends on what level of book, and what you want to learn from it. On "how real distributed systems are built", there isn't a really good book available in my opinion. I liked The Datacenter as a Computer, but it's scope is fairly narrow and is more focused on global infrastructure issues than software design issues. On the math behind distributed systems, Nancy Lynch's book Distributed Algorithms (http://www.amazon.com/Distributed-Algorithms-Kaufmann-Manage...) is my favorite, but it's getting to be quite out-of-date.

      Absent a book, there are a lot of great resources online. High Scalability(http://highscalability.com/) has a good amount of quality links to distributed systems content, and some editorial content of varying quality. In general, it's a good site to follow if you're interested in how distributed systems are being used in industry. I also like to follow Aphyr's blog(http://aphyr.com/), Daniel Abadi's blog(http://dbmsmusings.blogspot.com/), and Henry Robinson's blog(http://the-paper-trail.org/blog/) and Peter Bailis's blog(http://www.bailis.org/).

      thread
    4. g9yuayonMay 2024
      My experience as well. I tried it a couple of times more than 10 years ago, one is covering Nancy Lynch's Distributed Algorithms, and one is Maurice Herlihy's The Art of Multiprocessor Programming. We finished about 1/4 of each of the books before running out of momentum. People simply lost interest as the content became increasingly challenging. We talked about the reasons, and the overwhelming feedback was that people lost interest because they failed to see what they learned could be applied to the job in short term, so it looked to them that the effort of learning the hard stuff wouldn't pay off.
      thread
    5. olalondeJan 2017
      I've been reading "Distributed Algorithms" by Nancy Lynch lately.
      thread
    6. DennisPJun 2012
      I suspect Level 4 is to read Distributed Algorithms by Nancy Lynch, who won the Knuth Prize for this stuff. A shorter book that looks good is Distributed Systems: An Algorithmic Approach, by Sukumar Ghosh. I recently bought them both but haven't tackled them yet.
      thread

    Related

    Cover of An introduction to the analysis of algorithms
    2013–2025

    An introduction to the analysis of algorithms

    Robert Sedgewick
    3 recommend · 6
    Cover of Advanced data structures
    2016–2021

    Advanced data structures

    Peter Brass
    3 recommend · 4
    Cover of Randomized algorithms
    2010–2023

    Randomized algorithms

    Rajeev Motwani
    4 recommend · 7
    Cover of Introduction to Algorithms
    2007–2026

    Introduction to Algorithms

    Thomas H. Cormen
    274 recommend · 880
    Cover of The algorithm design manual
    2007–2026

    The algorithm design manual

    Steven S. Skiena
    195 recommend · 321
    Cover of Algorithms + data structures=programs
    2007–2026

    Algorithms + data structures=programs

    Niklaus Wirth
    35 recommend · 81
    Cover of Distributed Computing Through Combinatorial Topology
    2020–2024

    Distributed Computing Through Combinatorial Topology

    Maurice Herlihy
    3 recommend · 3
    Cover of Parallel distributed processing
    2009–2026

    Parallel distributed processing

    David E. Rumelhart
    5 recommend · 29