6 ms·
Book list for streetfighting computer scientists (2022)
- zer0zzz 3y agoI love Nick Black
- tptacek 3y agoStevens (APUE and Network Programming) doesn't hold up. You'd do better with Beej. They weren't all that great even at the time; what they were were book-length treatments of the topics that you could reasonably expect to find on the shelf in a suburban Borders bookstore. Even the motivation for those books is obsolete! Varghese is much too situational a book for this list; it's like bringing a trebuchet to your street fight. It's a book about building dedicated middleboxes. You can Google the title and get the PDF of the whole book on the first search result page. I like it a lot but I can't imagine sending anybody to it. I will give the list this: Hanson is probably the best general-purpose C programming book. Of course, part of that is that almost nobody writes general-purpose programs in C anymore. Stroustrup, on the other hand, is like being one of those flashy sword fighters in the souk in Cairo in Raiders of the Lost Ark. Indiana is just going to shoot you before you make it through the first chapter. Axler is not the linear algebra book I would take to a street fight. Nobody writes proofs in a street fight. You want Strang. Maths aside --- you need the exercises at the ends of the chapters to get anywhere with math --- I'm not sure books are really the thing anyways. I can quickly think of things I've learned by doing (and being taught while doing), but not a lot of things I feel like I meaningfully picked up because I read it in a book. Excepting maybe Hanson's C book, which definitely did change the way I wrote C. (Alexandrescu's book changed the way I wrote C++, but it also set me on a rapid trajectory out of C++).
- bluejekyll 3y ago> Stevens (APUE and Network Programming) doesn't hold up. > They weren't all that great even at the time I can’t say I agree with this. Stevens’ books have always been a go to for me for ever. They don’t have great coverage on more recent topics like Anycast and Multicast, so probably outdated at this point, but I can’t think of a single author who taught me more about network and unix/posix programming. All of the concepts transferred well into Java and Rust after it for me. I’m eternally grateful for Stevens’ work.
- ahartmetz 3y agoAlexandrescu's "Modern C++ Design" is a collection of mostly impractical "clever" tricks that should be avoided in most situations. Like design patterns books, none of its advice should be used unless it solves a real problem that you noticed while not looking for a place to use the technique you just read about. I kinda hate the book, it's about the exact opposite of what I consider good programming: trying to make complicated things look simple.
- tptacek 3y agoFor what it's worth, I agree; I don't think Alexandrescu changed my C++ for the better, but it did sort of serve as an object lesson for overly nerding out on PL capabilities.
- ahartmetz 3y agoReading the O'Reilly Perl book when I wanted to get more serious about programming did something similar for me. I knew very little at the time, but enough to conclude that Perl is the opposite of what I want.
- 0xEF 3y agoYou mention needing exercises after each chapter for maths, but I find this lacking in far too many technical books I pick up. Most of them take the "good enough" approach were the chapter exercise is really just some limp-wristed vocab quiz, and that's if there's an attempt to get the reader to use the practice at all. It's wildly disappointing and such a waste of the readers time to do that. I wish technical authors would get a clue. > I'm not sure books are really the thing anyways I agree, here, although I still like to have books for offline reference and general brush-up in my downtime. That said, do you recommend any non-book sources for maths pertaining to CS? You seem to have good suggestions otherwise, so I figured I'd ask.
- mp05 3y ago> You want Strang. Hell yeah you want Gilbert. Watching the guy's MIT lectures is a joy and the gumby-colored book reads like a narrative. I wish my calc books were as well written, else I'd not be reviewing vector calc with some intensity in my 30s. That said, I have to recommend "Div, Grad, Curl, and All That" as I believe that I found it through someone's random comment here and it was a stellar find. I've realized I'm rather rusty on these topics and this book is very assertive of its target audience.
- justin66 3y agoNetworking Algorithmics is a weird one. I haven't looked much at the new edition, but back about ten years ago (yeesh) I kept tripping over the first edition of that book by accident, and then referring to it. I never read it cover to cover. In what I feel is a decent test for a book, it was the best at explaining a few specific concepts that other books which were searchable using O'Reilly's online library barely touched on. I bet that might still be the case. When I needed a refresher for socket programming back in that same timeframe, I divided my time pretty evenly between Stevens, Beej, and Kerrisk. I get why people felt so much reverence for Stevens when it came out, but I also get why Beej's guide came about later on, as a more straightforward option. Kerrisk is just amazing, but I bet some would find it to be overkill. I suppose it aims to inhabit some of the space Stevens did, and it's undeniably a lot better.
- dankamongmen 3y agogreat feedback; i shall check out Beej and see what's up. it was many years ago that i learned my basic UNIX work. networking algorithmics is a classic, and there's nothing else quite like it. i stand by that one for sure. he also has a lot of the great networking algorithms in there that you can't get collected anywhere else. haven't looked at strang, either--axler did well by me! appreciate the informed and quality comments. --nick
- pjot 3y ago“Street fighting mathematics” is a fantastic textbook. https://books.google.com/books/about/Street_Fighting_Mathematics.html?id=qrdNEAAAQBAJ&source=kp_book_description https://books.google.com/books/about/Street_Fighting_Mathema...
- Jtsummers 3y agoMore useful links than Google Books for it: https://ocw.mit.edu/courses/18-098-street-fighting-mathematics-january-iap-2008/ https://ocw.mit.edu/courses/18-098-street-fighting-mathemati... - MIT Open Courseware version of the course (some links don't work) https://mitpress.mit.edu/9780262514293/ https://mitpress.mit.edu/9780262514293/ - MIT Press link for the book, includes Open Access link (working, unlike one of the OCW links) https://direct.mit.edu/books/oa-monograph/5339/Street-Fighting-MathematicsThe-Art-of-Educated https://direct.mit.edu/books/oa-monograph/5339/Street-Fighti... - Open Access link from MIT Press
- vymague 3y ago[flagged]
- vymague 3y ago[flagged]
- Jtsummers 3y agoYou didn't call him an "anti-vax conspiracy nutso" in the first comment, you said he was "pretty insane based on his tweets" with no other context (though I, and probably others, found the anti-vax stuff based on looking it up). (I didn't downvote/flag it, but I'm not vouching/upvoting it either, this comment is much better than your first.) As to turning a dissertation into a book, it's sufficiently common that universities like Georgetown have content like this on their university library site referencing other major universities: https://library.georgetown.edu/scholarly-communication/etds-publishing https://library.georgetown.edu/scholarly-communication/etds-...
- techbro92 3y agoAre there really people who actually read this many textbooks? I read half the textbook “Rigid Body Dynamics Algorithms” and it took a couple months. And I had time because I read it for a research project in grad school. I can’t imagine going home after work and grinding these textbooks for years.
- anta40 3y agoWell I do, some of them. But only for studying a few specific topics. I used to have the copy of TAOCP vol 1 - 3, and eventually only read vol 2 because I was interested in (pseudo) random number at that time.... :D
- techbro92 3y agoHow long did it take you to read these 3 books and did you read them in depth?
- anta40 3y agoI never finished them, mainly because I treated them as references, e.g for in-depth mathematical analysis :D Say for studying data structures, I'd recommend a general text book like Weiss or Sedgewick. It's very rare I study Knuth directly.
- agileAlligator 3y ago> eventually only read vol 2 because I was interested in (pseudo) random number at that time Your comment comes at the perfect time, I am looking at learning about random number functions and tests of randomness myself. Do you have any other resources about these topics?
- anta40 3y agoSome statistics books, perhaps? I think there are some references on them. I don't study random numbers anymore because my interest changed few years ago.
- anta40 3y agoFirst time I reading the title, I had to think what "street fighting" is. Then I remember a quote read from somewhere else: "the only rule on street fight is there are no rules." After reading the comments, guess I'm close enough.
- systems 3y agoi am not sure i agree some of those book are a bit too hardcore - Knuth, The Art of Computer Programming - Pierce, Types and Programming Languages And its too unix focused, too systems or low level programming focused there is a lot more to programming than mastering unix and c I think this list needs - A Python book - A SQL book and a Relational DB book - Some windows and unix admin books - A book about testing and CI/CD - A book about computer security - A Machine Learning book
- bawolff 3y agoI get the impression the author of the list is the type of person who believes that if you master the hard core stuff the soft core stuff will come easily.
- heads 3y agoAnderson, Security Engineering (Wiley) would make an excellent addition to this list. (The blog post omitted anything infosec saying the field is “part of QA” but it’s not like this list is pure CS — a lot of engineering topics aka “applied computer science” are on the list already.) Security economics is important when building real world software because one has to know one’s enemy in order to decide what to defend against. It is literally the most “street fighting” topic in the field.
- tptacek 3y agoFor people who call it "infosec", it probably is, or an admixture of QA and IT.
- pvg 3y agoWait, what do sophisticated people call it and if we adopt it, will they stop saying ‘nation state’?
- tptacek 3y agoIt's like 8 different and mostly unrelated disciplines, so, "hardware security", "software security", "vulnerability research", "exploit development", "software reverse engineering", "cryptography engineering", maybe "systems security" if you want to put OS security in a different bucket from software security. And then all the IT and risk management stuff (network security, corporate security, &c). This is off the top of my head. Most of this work is totally unlike QA. Even the parts of it that are like QA (vulnerability research, say) are pretty unlike QA; the bugs you find in QA tend not to be driven by adversaries, so you get to work with a relaxed set of constraints. QA work is much more process-focussed, about repeatability and coverage, and less about detailed study of how systems work. In hardware and cryptography, the work closer in spirit to vuln research is called "verification". There's superficial vuln research that any QA person can (and should! but probably doesn't!) do. But if "looking for bugs" is "QA", have fun explaining to people writing Tamarin proofs for protocols that they're just QA engineers. None of this is to belittle QA work, which is very difficult to do well, and which has its own subfield of ideas and research and tooling and stuff.
- runeblaze 3y agoI really would like to street-fight with TAPL and Purely Functional Data Structures. Imagine a different world where competitive programming is about proving theorems in Coq and people play with finger trees instead of segment trees.
- throwaway81523 3y agoI'll have you know that Pugs, the first implementation of Perl 6, was written as a result of Audrey Tang reading TAPL and then getting interested in Haskell. Audrey was at that time known as Autrijus but she later underwent a sex change. I guess I'm no longer allowed to joke "this is what Perl 6 does to people".
- carterschonwald 3y agoThere’s some good ones here. But there’s also some that are deeply silly. The Barendregt book (I’m not even remembering the correct spelling) is definitely of no use for applied computer science, or most flavors of theoretical programming language work.
- anta40 3y agoEven too theoritical for functional programming research, perhaps?
- carterschonwald 3y agoAssuredly so.
- aballo 3y agoDoes anyone have recommendations for how to read books like these? Looking for advice around note taking / annotating / skimming.
- wolverine876 3y agoUse PDFs of the books (pay for them, of course). Searching and bookmarking make navigation much faster and easier, including for cross-referencing, glossaries, etc. Annotations are far more powerful; they are editable, copyable, come in many forms (highlight, underline, text boxes, draw, hyperlinks, etc etc.). You can type much faster and fit much more than you can write with a pen. PDFs are of course far more portable, and they are durable over decades (esp. PDF/A). I'll never study a book on paper again; it's just too inefficient, so much that it's not worth matching PDF functionality. I'll just wait however long it takes to obtain the PDF.
- bawolff 3y agoAll this depends on the person. Personally i find studying from a pdf basically impossible. Everyone is different though, what is important is finding what is right for you.
- rramadass 3y ago> Personally i find studying from a pdf basically impossible. Agreed. Until and unless i can get a e-ink/e-paper display (minimum A4 size, 13" or more is better) which will not cause eye strain/fatigue it is impossible to read any kind of technical book electronically for long periods of time. And this i say as a person who owns a 27" iMac, a iPad, a Nexus10 and a couple of 10" and 16" inch laptops. I have a huge collection of technical books as pdfs which i only consult on my devices. For serious studying of any books i always get a paper copy; nothing else works.
- RecycledEle 3y agoLearning to study a PDF on-screen is a skill. It is a skill that can be learned.
- jonstewart 3y agoPerhaps if all you want to do is write papers with lots of equations about algorithmic complexity, then Crochemore may be a fine choice. If you want to write papers with graphs showing your new library’s string processing bandwidth goes up and to the right (this is for street fighting, yes?), then you want Navarro and Raffinot over ol’ stuffy Crochemore.
- jonstewart 3y agoManning’s Introduction to Information Retrieval is awfully useful. https://nlp.stanford.edu/IR-book/information-retrieval-book.html https://nlp.stanford.edu/IR-book/information-retrieval-book....
- Dwedit 3y ago"Programming Windows" by Charles Petzold is such a thick book that it might be useful in an actual street fight.
- jahewson 3y agoNo match for my Knuth canon [sic]!
- Turing_Machine 3y agoNeeds a database book (suggestions?), an OS book, (Silberschatz, Galvin, and whatever coauthors they have by now, maybe Tanenbaum as well) and a graphics book (Foley and van Dam, again plus however many coauthors they have by now). Someone else suggested a machine learning book. I'd agree, except I doubt there are any books out that give enough coverage to the LLM stuff that's exploding everywhere. That stuff is still coming out in academic journals, not textbooks. Maybe in five years.
- jschrf 3y agoOut of the Tar Pit. Fight over. One punch KO. Every engineer, soft or hard, should read it or just jump into the gutter of /dev/null.
- throwaway81523 3y agoThis is a pretentiously described but generally pretty good list of undergrad-level CS and math books.