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 Numerical recipes

    Numerical recipes

    Julien C. Sprott, William H. Press, Saul A. Teukolsky, William T. Vetterling · 1991

    MathematicsProgramming
    Open LibraryAmazon
    Stats for nerds
    2recommend
    3mentions
    3people
    2009–2025years
    67% recommend33% neutral

    Mentions per year

    200920112013201520172019202120232025

    What Hacker News says

    1. 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
    2. mjtokellyJul 2009
      Numerical Recipes' two chapters on FT (one on implementation, one on applications) is a longer introduction. It does especially well at addressing Confusion's point by making FTs' meaning intuitive, across many domains.

      http://www.amazon.com/gp/product/0521880688/

      thread
    3. PaulHouleApr 2025
      (1) Maybe I'm just a little too young but my impression was that the 360 and it's successors were not that big in scientific computing, certainly there were some big academic installations but I saw a lot more DEC machines (PDP-8 in the experimental lab, PDP-10, PDP-11 and VAX elsewhere) and by the time I went to college circa 1990 you were likely to see Motorola 68k-based "workstations" that were quickly replaced by RISC architectures like SPARC and PA-RISC which in turn failed to compete with the PC.

      Cornell had one of very few IBM 3090s with a vector unit (to compete with the Cray) just before I showed up, but when I did IBM had donated a message-passing based supercomputer based on the Power PC architecture. I only saw a 3090 (no vector unit) at New Hampshire Insurance which I got to use as a Computer Explorer.

      (2) I was taught in grad school in the 1990s to use floats if at all possible to reduce the memory requirements of scientific codes if not actually speed up the computation. (In the 1990s floats were twice as fast as doubles on most architectures but not the x86). I really enjoyed taking a course on numerics from Saul Teukolsky, what stood out in the class as opposed my reading to the Numerical Recipes book which he was a co-author of, was the part about the numerical stability of discretizing and integrating partial differential equations. If you did it wrong, unphysical artifacts of the discretization would wreck your calculation. Depending on how you did things rounding errors can be made better or worse, Foreman Action's Numerical Methods that Work and later Real Computing Made Real reveal techniques for managing these errors that let you accomplish a lot with floats and some would point out that going to doubles doesn't win you that much slack to do things wrong.

      thread

    Related

    Cover of Advanced data structures
    2016–2021

    Advanced data structures

    Peter Brass
    3 recommend · 4
    Cover of How to solve it
    2016–2024

    How to solve it

    Zbigniew Michalewicz
    1 recommend · 2
    Cover of NUMERICAL RECIPES IN C
    2010–2026

    NUMERICAL RECIPES IN C

    William H. Press
    9 recommend · 40
    Cover of NUMERICAL RECIPES IN FORTRAN
    2012–2025

    NUMERICAL RECIPES IN FORTRAN

    William H. Press
    1 recommend · 6
    Cover of Introduction to Algorithms
    2007–2026

    Introduction to Algorithms

    Thomas H. Cormen
    274 recommend · 880
    Cover of Numerical methods for scientists and engineers
    2013–2026

    Numerical methods for scientists and engineers

    Richard Hamming
    5 recommend · 10
    Cover of Introduction to the theory of computation
    2008–2026

    Introduction to the theory of computation

    Michael Sipser
    66 recommend · 96
    Cover of Numerical Optimization
    2016–2025

    Numerical Optimization

    Jorge Nocedal
    6 recommend · 12