The art of computer programming. Put all volumes into a custom made box, and life that 100 times every day. /j
FROM THE HN SHELF
The Art of Computer Programming
Donald E. Knuth
Computing · A SERIESTypographic jacket · original cover not fetched
A BOOK SERIES · 2006–2026 SAMPLE
The Art of Computer Programming
44 readers recommend it across 31 discussions
Topics are model-inferred labels.
Keep it on your reading list
THE WORD OF MOUTH
What made it worth passing on?
Original Hacker News comments, in the readers’ own words.
Torn between It's a poem published in 1979 by the son of a physics Nobel prize winner, and it's about consciousness and artificial intelligence, and how they relate to mathematical proofs, music compositions (especially Baroque organ music) and visual art. It is full of self-references. It's a twelve-episode science mystery called "TAOCP"... eagerly awaiting episode 4c! It's full of passion, hard facts, proofs, code fragments, even music scores and of course jokes.
Also recommended in this reply
Having been a reader approxumately all my life, approximately all the books have been worth my time. Though the best book is far and away Three Little Pigs which my now grown-ass-man child called “the wolf book” when requesting it at bedtime at the age of incredible. I highly recommend it — time spent with your child I mean, But if you want an HNish book recommendation?…The Art of Computer Programming is well worth trying to read because it will be challenging for as long as you keep at it. Good luck.
The Art of Computer Programming boxed set.
Illuminatus trilogy: https://en.wikipedia.org/wiki/The_Illuminatus!_Trilogy Knuth's TAoCP.
Also recommended in this reply
* The Art of Unix Programming * The Art of Computer Programming
Also recommended in this reply
Going to stick my neck out here: I read a lot of technical books, have a masters in math and 10+ years professional experience but man that book was too much of a slog for me (only made it a few chapters). It sure _seems_ like a no-brainer to read such a classic, but I wonder how many copies languish on the shelf without ever getting finished (same goes for The Art of Computer Programming). Don't let this discourage you from giving it a shot, but also don't be discouraged if you aren't able to finish it. Just keep reading and challenging yourself as best you can -- a few years of that and you'll be miles ahead of 99% of devs out there.
Likewise, TAoCP (er, Knuth's "The Art of Computer Programming") is even _older_ than SICP, and will definitely not help with writing better professional Python programs, but is steeped in first-principles goodness. Even so, I end up turning to it every once in a while; once while figuring out some tricky allocation code, and another to see if I could find a way to skip a few steps in a piece of code that needed to run in a tight loop. It's certainly not required reading to be a successful programmer in the 21st century, but like SICP, it offers a different way of looking at things that may help influence some of your decisions on how to build something.
Also recommended in this reply
If a textbook is eye-opening, that's partly due to the textbook but it's also because you were at a moment in your understanding of that subject, that your eyes were ready to be opened and just needed a trigger. For me, TAOCP in high school was a big one. I don't claim to have understood very much of it, but spending evenings in the library bashing through the parts I could make sense of gave a total change in perspective.
Neuromancer Snow Crash Blindsight (Just some fun fiction to bolster one's passion for their chosen profession. Obviously TAOCP, SICP, K&R, and other books in their ranks are better answers.)
Also recommended in this reply
Computer science: Knuth's TAOCP. And Sipser's Introduction to the Theory of Computation. Programming: SICP, K&R, and Stroustrup. Siebel's Practical common lisp. Artificial intelligence: AI a modern approach. Signals and Systems: Oppenheim's book Probability and statistics: Probability Theory: The Logic of Science by Jaynes
Also recommended in this reply
Physics: Feynman's lectures on physics. Maths: Rudin's Real and Complex analysis. Software engineering: The Mythical Man-Month. Computer science: Knuth's TAOCP.
Also recommended in this reply
If it was TAoCP, I would always have something I didn’t understand to read. I would always be learning. And Knuth is a fine writer to boot.
The bot's recommendations are good, although maybe not inspiring. "Programming Pearls" might be an exception—there are some great real-life stories and problems to think through in that. Maybe also "The Art of Computer Programming" but I can't speak from experience (I'm not ready to tackle that one yet).
Also recommended in this reply
No matter how long you've been a programmer, you're always looking for new ways to hone your craft and learn new techniques. One of the best ways to do that is by reading books on programming—as in, books that are actually about programming. Here's our list of 10 of the best. 1. Code: The Hidden Language of Computer Hardware and Software 2. Clean Code: A Handbook of Agile Software Craftsmanship 3. Refactoring: Improving the Design of Existing Code 4. The Pragmatic Programmer: From Journeyman to Master 5. Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability 6. The Mythical Man-Month: Essays on Software Engineering 7. Structure and Interpretation of Computer Programs 8. Introduction to Algorithms (The MIT Press) 9. Programming Pearls (2nd Edition) 10. The Art of Computer Programming
Also recommended in this reply
- Structure and Interpretation of Computer Programs
- Code: The Hidden Language of Computer Hardware and Software
- Introduction to Algorithms
- Programming Pearls
- Clean Code: A Handbook of Agile Software Craftsmanship
- The Mythical Man-Month: Essays on Software Engineering
- Refactoring: Improving the Design of Existing Code
- The Pragmatic Programmer: From Journeyman to Master
- Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
If you are young and stupid enough, you don't even realize when a book is too difficult. You just plow through it if you can make any sense of it at all. So for me it was TAOCP, a few different theory books by Aho and Ullman, and Spivak's Calculus. I can't say I understood everything in them, but they got me going.
Also recommended in this reply
I'm starting to learn CS all over again at the old age of 40, and had the pleasure to rediscover mathematics thanks to: - Discrete Mathematics with Applications, by Susanna Epp, or - Discrete Mathematics and Its Applications, by Kenneth Rosen (both have the same content, choose the style that you prefer), and - Concrete Mathematics, by our lord and savior Donald Knuth. I don't plan on reading TAOCP anymore as I would be dead by the time I finish reading everything else, but those introductory books are very good for beginners.
Also recommended in this reply
> I haven't read any of Knuth's stuff because doesn't having 7 volumes kinda imply it can't possibly be well edited? That's a very bad assumption in this case. The contents of TAOCP are very well edited, just massive in scope and it's one man putting it all together. However, those aren't his only books. Concrete Mathematics is a completed text that expands on, in particular, the math in Chapter 1 of TAOCP. Literate Programming is a collection of papers on topics in programming, and is the first of eight such books. If you want interesting but mildly impractical, check out his Computers & Typesetting [0] which includes two books which are actually literate programs. [0] https://www-cs-faculty.stanford.edu/~knuth/abcde.html
Also recommended in this reply
Well, Volume 4 was released in 2016 and is not out of date at all. Its a very good read, but on an obscure subject. But Volume 1 has lots of out-of-date advice and is somewhat of a shame, because its otherwise an excellent introduction to computing + the mathematics needed to understand computing. For example, the assembly language is based on the 1960s computers, such as decimal computing and 6-bit numbers (based on the days of old, before 8-bits were standardized). Functions are introduced by self-modifying code first and foremost: by rewriting "jump" instructions at the end of functions as a return. No one does this anymore: pretty much all compilers do the stack-thing instead. (Push return address onto a stack register). The Fascicle on MMIX updates a lot of those sections to a modern-like 64-bit assembly language. However, the sections on cofunctions, arrays, garbage collection aren't part of that update... and should be updated (Knuth's discussion on these concepts is great, but are told in an "old way" based on 1960s tech)…
Most algorithm books don't cover the math like summations or generating functions. Chapter one of TAOCP for better or worse, is a very rigorous mathematics introduction. I'm not recommending it for it's algorithms (which are unfortunately somewhat out of date). I'm recommending it because it's an incredible mathematics introduction, albeit a very difficult one.
TAOCP is probably the best book if you approach it as infotainment/puzzles casual reading on the weekend reading about the history of trees and their mathematical properties kind of reading not anxiety filled interview passing cramming. Even autodiff online algorithms is in there something heavily used right now.
Art of Computer programming starts at a high school level. It's very rigorous and considered one of the more difficult reads. But if you start at chapter 1 page 1, it covers all the math you'll ever need for the rest of the books (which is sufficient maths to reach masters or even PH.d level comp sci) I know I've recommended it to high schoolers. A lot of math is just getting used to the nomenclature and vocabulary. The sooner you get used to rigor the better
TAOCP is too detailed and too deep as a beginner's book; you first want something lighter that you can worth through end-to-end before taking on a 7-volume book that is still not even finished (volume 4b of 7 in progress at the time of writing). Note I am _not_ saying TAOCP isn't readable, I consider it very well written. But it's terse, hard, too deep and too detailed for a beginner, IMHO.
The Art of computer programming by Donald Knuth.
If you want basics and details, the art of computer programming is a good candidate. Unfortunately, it isn’t done yet (1), and the completed parts have are very basic and have parts that are a bit dated (multi-tape sorting, for example) (1) and likely never will be. Knuth is turning 84 in two months, and isn’t even halfway writing it, after almost 60 years
I like "The Art of Computer Programming". It uses assembly language, which is one thing I like compared with other books, but there are other things I also like about this book compared with other ones too, I think it is better written.
Hm - maybe “fun” isn’t the right word, but I do find it mostly relaxing and pleasant to work through one as long as I’m not under any time pressure. I enjoyed TAOCP, for example, but I’ve definitely tried to read other books that I ended up giving up on, too.
This. IMO Knuth's writing is also a pleasure to read. Some concepts are hard and sometimes I just have to skip some math derivations but overall it's certainly not a dry technical reference (even though it can be used as one).
I agree with a lot of this. The one thing that I've found with some of these "fundamental" books is that there are gems of information that can be very helpful for specific problems. For instance, Landau and Lifshitz's statistical mechanics book has first-rate description of entropy and multiplicity. And TAOCP has an incredibly thorough discussion of combinatorics that I found invaluable.
>While "The Art of Computer Programming" is a great book, it's not a fundamental book Agreed. It's very much like "Feynman's Lectures" in this way.
While "The Art of Computer Programming" is a great book, it's not a fundamental book. I'd say it's more of a re-distillation plus some of Knuth's personal take on things. Also, I'd add, at least: Introduction to Algorithms / Cormen, Leiserson & Rivest (and recently also Stein)
Also recommended in this reply
That's pretty much what my copy does. I'm grateful the profession has TAOCP as a resource, but the reality for the majority of workaday engineers is that most of the sort of art described in that series is abstracted out into libraries. As fun or challenging as it might be to thinking about developing your own implementation of a fundamental algorithm or data structure, you're probably far better off reusing whatever you have available to you already in your environment. This has the tendency of pushing the work to the boundaries, where engineering is more about connecting existing pieces than anything else. (Which isn't a problem... I'd hate to live in a world where every home that's built requires the builder to cut down trees and process their own lumber, etc.) I do least take solace in the fact that the contents of TAOCP are a lot less likely to get stale than the majority of tech books.
The Art of Computer Programming Structure and Interpretation of Computer Programs Purely Functional Data Structures Programming in the 1990s A Logical Approach to Discrete Math
Also recommended in this reply
You should start reading The Art of Computer Programming by Donald Knuth, and solve all exercises (including ones having difficulty level 50). If you catch up finishing all currently existing volumes before Knuth finishes, with all the exercises answered thoroughly; you can consider yourself a self-taught algorithms expert.
I sort of wish my CS grad school had just been studying those books versus some of the stuff I did cover.
> Has anyone really read these books from page to page? I recently finished reading the first three, and have started on the fourth (with a detour to read "fascicle 1.1 on MMIX"). I started the series planning to work every single problem. That turned out to be just a little unrealistically ambitious - I settled for _attempting_ every single problem except for the "unsolved research problems" (in some cases, just figuring out what the problem was asking for left me with a sense of accomplishment). Even so, I ended up spending a year on each volume, reading/working problems for a half hour a day or so. On the one hand, I loved these books, and really enjoyed reading/working through them, but - recommended before beginning one's software development career? You'll need to know a fair amount of calculus to make sense of a lot of it, and it'll take quite a while to get through. It's questionable how relevant it really is, fascinating as the subject matter is.
1) The Art of Computer Programming 2) The Art of Computer Programming 3) The Art of Computer Programming 4A) The Art of Computer Programming
- Structure and interpretation of computer programs More by nostalgia than by need - The art of computer programmming - Hacker's delight These two are of great help when doing programming challenges. Hacker's delight is about bitwise tricks. - Open Data Structures Useful for a quick refresh on data structures.
Also recommended in this reply
The Art of Computer Programming by Donald Knuth is probably the closest to an actual bible for computer scientists - hardly anybody's read it all the way through, people quote bits of it out of context for their own ends and it mostly sits on shelves looking impressive while gathering dust. The Mythical Man-Month by Fred Brooks for tech management. Confessions of an Advertising Man by David Ogilvy for advertising/marketing industry. Design Patterns: Elements of Reusable Object-Oriented Software by the "Gang of Four" for OOP software engineering.
Also recommended in this reply
As a reader of books, one of the good things about growing older is that the books the younger version of myself read are books that this older version of myself hasn't and there is great pleasure in rereading the books the younger version of myself read as the older person I am. And that makes this exercise impossible for me. The books I would tell the younger version of myself to read wouldn't resonate the same way (or not at all) with that other person I used to be. Picking books that might have appealed to the younger version of myself accurately would mean picking the books I actually read -- e.g. The Fifth Discipline -- and not books that the younger version of myself tried to read but couldn't but that I read and recommend today: e.g. TAoCP. Part of the complexity is that the world in which I read books today is radically different from that of my younger self. Today I can get a MIX interpreter from the internet [1]...there's even help on StackOverflow. My younger self couldn't because even in the time when there was an internet bandwidth was low and Google didn't exist.…
Also recommended in this reply
Below list are some of my favorite books overall that I didn't see mentioned. ---Non-software related How to win friends and influence people -Dale Carnegie (The definitive guide to helping you work better with people, truly great book, should be required reading) Blink- Malcolm Gladwell Godel Escher, Bach - (Recursion, but not from a software perspective. Its a glorious book that will change the way you think about recursion.) Hitch Hiker's guide to the galaxy, - Douglas Adams (Glorious book that is a fun read, when you need a break pick this up and laugh hard) Foundation Series - Assimov (Great stories from one of the best sci-fi writers ever) -------------------Software related Code Complete Concrete Mathematics The Art of Computer Programming The Design of the Unix Operating System Introduction to Algorithms -Cormen Design Patterns Elements of Resusable OO Design -Gang of Four
Also recommended in this reply
- Gödel, Escher, Bach: An Eternal Golden Braid
- How to Win Friends and Influence People
- Code Complete
- The Hitchhiker's Guide to the Galaxy
- Foundation
- Introduction to Algorithms
- Design Patterns: Elements of Reusable Object-Oriented Software
- Concrete Mathematics: A Foundation for Computer Science
- Blink: The Power of Thinking Without Thinking
- The Design of the UNIX Operating System
Even his noise is signal. He is Donald Knuth. The Art of Computer Programming.
Without going into heavily technical books, I'd recommend The Code Book by Simon Singh. There's also Fermat's Last Theorem by the same author. On the more technical side, it's somewhat cliche but, TAOCP really is excellent.
Also recommended in this reply
TAOCP by Knuth (if you can get past the maths).
Concrete Mathematics by Ronald Graham, Donald Knuth, and Oren Patashnik https://en.wikipedia.org/wiki/Concrete_Mathematics Also Knuth's TAOCP series are very formal and dense, in a good way.
Also recommended in this reply
Knuth's "The Art of Computer Programming" - linked lists, state machines. Carlos Castenada's Don Juan series (yes, I know it was fiction) - "one has no choice but to believe. What matters is what you believe". John C. Lilly's "Center of the Cyclone". These three, all around early-mid 70's, ended up moving me from the UK to Los Angeles. Strangely, each adds a different understanding to the others. Together, I guess it just makes me a bit strange. But it works.
Also recommended in this reply
Knuth's Art of Computer Programming Aside from that, there are typically only 1-2 extremely well regarded books in any given area. If you're going to be doing something specific, grab the appropriate book. eg: Compilers - Dragon Book AI - Russel/Norvig's Artificial Intelligence: A Modern Approach Oh.. everyone needs a whiteboard, as well - they're quite useful
Also recommended in this reply
Godel, Escher, Bach SICP Art of Computer Programming C Programming Language Introduction to Algorithms Land of Lisp -- Extracted from my wishlist - http://flipkart.com/wishlist/dhavaltrivedi
Also recommended in this reply
If you want to read some eye opening fiction then I would recommend cory doctorows three books, Little Brother, Makers and For The Win. I know it is stacked in the young adult fiction section but it still is good read for anybody. <something irrelevant> I am shocked that in 26 comments till now nobody has mentioned Godel Escher Bach by Douglas Hofstater. Apart from everything else it has accomplished it is always the best seller in the "Nobody reads but everybody recommends" category, or at least the close second or draw to Art Of Programming by Knuth. </something irrelevant>
Also recommended in this reply
I've been enjoying the Knuth series over the past year or so. Almost done now.
It really depends what sort of hacker they are. There's a sort of hacker you buy a copy of "Pro JavaScript Techniques" for, a sort you buy the Dragon Book for, and another sort who you give a copy of TAOCP.
Also recommended in this reply
- New Hacker's Dictionary (print version is nice for browsing) - The Little Schemer (or the whole series, if you really like them) - The Art of Computer Programming
Also recommended in this reply