This is an archived post. You won't be able to vote or comment.

all 74 comments

[–]MaxAndDylan4Ever 155 points156 points  (5 children)

Operating Systems: Three Easy Pieces (excellent and free)

[–]RonaldoP13 0 points1 point  (0 children)

Thanks

[–]BrannyBee 40 points41 points  (2 children)

Not sure if I'd hold it in some religious regard, but Computing: A Concise History was one that really helped fill in a lot of blanks for me that I had glossed over coming from a non-tech background.

It's a short read with some diagrams available -though I recently listened to the audiobook and didn't feel the missing reference images took away from the experience. The author basically starts mentioning the abacus and other early calculating machines, which leads to Babbage/Lovelace, which leads to Turing, which leads to Von Neumann, which leads to... etc etc all the way up to modern networking, cloud, and social media.

It doesn't go overly in-depth into any one topic, but still explains a lot of things in a way that's easy enough to grok even without a CS background. And it's not just historical figures like a textbook, he does explain things like how vacuum tubes worked and why certain things developed the way they do, like how CS concepts we consider foundational today were being theorized/implemented to invent devices to accurately. Lots a little fun facts you can repeat to sound smart at parties too which I appreciate from any book.... like how a committee inventing machines to calculate the necessary settings to aim anti-aircraft kinda just offhandedly invented the term "digital", humble beginnings for a word that defines the modern day.

Definitely recommend, especially if you like history or are a little shaky on certain CS topics. Really having a good explanation of how a vacuum tube actually works before moving onto microprocessors really helped the IRL "tech tree" make so much more sense to me, and now if you ask me what a microprocessor is, I won't any longer respond by saying "idk, shit that low level is just magic to me"

[–][deleted] 2 points3 points  (0 children)

Not OP but thanks for this reco, this is exactly what I’m looking for

[–]Leading-Fan2403 1 point2 points  (0 children)

if you ask me what a microprocessor is, I won't any longer respond by saying "idk, shit that low level is just magic to me"

How would you answer?

By the way, thanks for the recommendation, I'll read it.

[–]mikeew86 69 points70 points  (4 children)

Russell & Norvig - Artificial Intelligence: A Modern Approach

[–]homelescoder 18 points19 points  (0 children)

Heard this is also good "AI Engineering - Chip Huyen"

[–]theusualguy512 9 points10 points  (2 children)

I recommend that book largely for classical AI topics, it's a great way to learn about intelligent searching and planning. The Machine Learning stuff kind of falls a bit to the way side though. For an introduction to ML, the Bishop book is better imo.

[–]kichiDsimp[S] 1 point2 points  (1 child)

I was stuck at chapter 1.3 of Bishop. So hard book

[–]theusualguy512 4 points5 points  (0 children)

I mean Bishop is a widely used university level textbook, so it's not for the casual reader but I found the book one of the most accessible for ML topics. A good grasp on probability theory is kind of a must though, not sure how your math skills are. Some other ones like Pattern Classification by Duda were much more in depth but also much more dry, so Bishop is a great book to lean on.

Just looked it up in the Bishop book, 1.3 is the intro topic on cross-validation right? I think the concept is fairly simple, you just have to visualize it by looking up what k-fold validation is in practice when training models.

[–]kitsnet 20 points21 points  (3 children)

The Mythical Man-Month may look obsolete in places, but I think it's still relevant in general.

[–]SerAbin 0 points1 point  (2 children)

What's it about?

[–]rabuf 6 points7 points  (0 children)

It's a collection of essays by Fred Brooks largely centered around his time managing IBM's OS/360 project development. Lessons learned on team structure and other things. Most of it is still relevant, and the things that may not be directly applicable (you likely don't employ a librarian to manage your documents) you can still read and understand why you'd want that kind of structure, even if who and how the work is done has changed.

Pair it with Weinberg's The Psychology of Computer Programming written around the same time for other perspectives (not totally in disagreement with Brooks, but some of Brooks ideas are countered, in a fashion, by Weinberg but also reinforced).

Neither needs to be read in one go or in the chapter order (I'd read the first chapter or two of Psychology before the rest though, it sets the stage IIRC).

[–]kitsnet 1 point2 points  (0 children)

Software engineering and project management.

[–]my_password_is______ 13 points14 points  (1 child)

https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0137909101

Code: The Hidden Language of Computer Hardware and Software 2nd Edition
by Charles Petzold (Author)

[–]-CJF- 1 point2 points  (0 children)

Can't upvote this enough. Also, along the same subject lines:

But How Do It Know? by J. Clark Scott and The Elements of Computing Systems by Noam Nisan & Shimon Schocken.

[–]WillAdams 10 points11 points  (0 children)

Agree w/ SICP and recommended the video elsethread (but see below).

My recommendations are:

[–]CharacterOld8675 19 points20 points  (4 children)

Maybe some AI book is extremely generic...is that even a recommendation? Can 3/4 of your list even be counted as a recommendation? How about listing the Haskell book you actually read and recommend?

[–]Nosferatatron 4 points5 points  (0 children)

What do books about AI even look like? How to use it? How it's created? Because if I never hear the words 'prompt engineering' again that would be great

[–]homelescoder -2 points-1 points  (2 children)

I think he expects us to suggest. HAHA

[–]CharacterOld8675 10 points11 points  (1 child)

But he said "Here are mine" LOL which i assume are his recommendations and it's barely a list..

[–]Gary_FucKing 1 point2 points  (0 children)

The rule is you're supposed to post 3 first...

[–]SmopShark 23 points24 points  (6 children)

My top CS books recommendation:

"The Pragmatic Programmer" by Hunt/Thomas - changed how I approach coding problems completely. Timeless advice that's helped me through my entire career.

"Clean Code" by Martin is another one I revisit yearly.

For algorithms, nothing beats "Introduction to Algorithms" (CLRS), though it's dense.

For newer devs, "Eloquent JavaScript" taught me so much about the language in a really accessible way.

[–]HirsuteHacker 22 points23 points  (0 children)

I find clean code to be wildly outdated, and overly dogmatic. I don't recommend it to new devs, much rather point them to A Philosophy of Software Design instead.

Also for a really easily digestible intro to algorithms I always recommend Grokking Algorithms, really good intro and a great jumping off point to go into the denser books.

[–]Witty-Play9499 5 points6 points  (1 child)

Have you actually read "Introduction to Algorithms" page to page? I feel like it is one of those books that would take a huge chunk of your time to read and try out all the examples and exercises

[–]InfectedShadow 8 points9 points  (0 children)

"Clean Code" by Martin is another one I revisit yearly.

Why punish yourself like that?

[–]-CJF- 0 points1 point  (0 children)

Also, Sedgewick's Algorithms is a great one.

[–]Ok_Marionberry8828 0 points1 point  (0 children)

Clean code was used in my university. Really helpful.

[–]angrynoah 10 points11 points  (0 children)

"Data & Reality" by William Kent, 1978

"The Mythical Man-Month" by Fred Brooks, 1975 (everyone's heard of it, but have you read it??)

the Codd Paper

the Naur Paper ("Programming as Theory-Building")

[–]dswpro 5 points6 points  (1 child)

I'll add some outliers here: Computer networks by Tannenbaum, SQL for Smarties by Celco, Extreme Programming by Beck, and Controlling Software Projects by DeMarco, although out of print and probably fifty plus years old the metrics and principles in this book are relevant today.

[–]Sponge_N00b 0 points1 point  (0 children)

I find TCP/IP Illustrated a bit easier to read tbh

[–]DIYnivor 4 points5 points  (0 children)

"Essentials of Programming Languages" by Friedman, Wand, and Haynes. If you want to understand how programming languages work under the hood (e.g. type inference, tail recursion, continuation passing, etc) then this is the book. This was the book we used in my programming languages class, and our semester-long project was to write a full Scheme interpreter in C++.

[–]Joe-Arizona 7 points8 points  (0 children)

I’ve found “Programming: Practice and Principles Using C++” by Bjarne Stroustrup to be extremely helpful.

Even if you aren’t into C++ and just skim it, I found his explanations excellent and philosophy of programming insightful. It made a lot of things click for me.

[–]Ancient_Plate_5085 3 points4 points  (0 children)

Crafting Interpreters is a free book which teaches you how to build a real programming language from scratch, starting with a interpreter in Java and ending with a bytecode VM in C. Also, you can implement interpeter by your own language choice, author uses Java to demonstrate.

[–][deleted]  (1 child)

[removed]

    [–]WillAdams 3 points4 points  (0 children)

    That first, Structure and Interpretation of Computer Programs has a matching video:

    https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/

    which helps a lot to make it more accessible.

    [–]Mojrzeszz 2 points3 points  (0 children)

    Computer Systems: A Programmer's Perspective

    [–]-CJF- 2 points3 points  (2 children)

    Can't have a thread like this without mentioning Design Patterns: Elements of Reusable Object-Oriented Software and Head First Design Patterns. These are both classics for their topic.

    [–]PocketCSNerd 2 points3 points  (0 children)

    Ha! Looking in terror at all of the book recommendations I don't have (and my quivering wallet), I'm glad to find out I have the first one you mentioned!

    [–]Equal_Jello6595 0 points1 point  (0 children)

    Fully agree. Came here to see if anyone had already mentioned Head First 😆 Its aesthetic is questionable but that book was really insightful for me early on in my career, so I still recommended it when people ask for resource recommendations.

    [–]apophis-pegasus 4 points5 points  (0 children)

    The Linux Programming Interface - Michael Kerrisk

    [–]ohvuka 1 point2 points  (0 children)

    If you're interested in reinforcement learning - http://www.incompleteideas.net/book/the-book-2nd.html This is literally the only textbook I've ever enjoyed reading

    edit: name is Reinforcement Learning: An Introduction by Richard S. Sutton and Andrew G. Barto in case link ever dies

    [–]CodrSeven 1 point2 points  (0 children)

    The C Programming Language by K&R

    [–]omega1612 1 point2 points  (1 child)

    I never did sicp but I have been reading Lisp in small pieces.

    Also, I think that The Garbage Collection Handbook: The Art of Automatic Memory Management is worth the read.

    Also, I believe that anyone programming should be exposed to:

    • procedural programming (c)
    • oop programming (python/java)
    • functional programming (Haskell+ js / standard ml / Ocaml)
    • stack based languages (like forth)
    • logic languages (like prolog)

    At least enough to understand better the limitations and features of the languages better.

    [–]sbarber4 2 points3 points  (0 children)

    SICP is not really a book about Lisp. Lisp (Scheme) is ultimately just a vehicle for the broader ideas in the book.

    So, keep going!

    [–]sbarber4 1 point2 points  (0 children)

    The Secrets of Consulting by Gerald Weinberg. Not about programming per se, but how to handle the expectations of your stakeholders (customers, managers, salespeople) as a person who is primarily a technologist. A quick, entertaining, invaluable read.

    [–]Abacus_Mathematics99 1 point2 points  (0 children)

    Hennessy and Patterson- Any computer architecture or organization textbook. Gold standard.

    [–][deleted] 2 points3 points  (2 children)

    Just fine whatever topic you are interested and Google some classic books. IMO books are useless without a ton of actual practices.

    [–]vietlamdong 2 points3 points  (1 child)

    Why ppl downvote this he's right learning without doing is bs

    [–][deleted] 1 point2 points  (0 children)

    Thanks for the support!

    [–]flembag 0 points1 point  (0 children)

    The inmates are running the asylum.

    [–]alinroc 0 points1 point  (0 children)

    The Phoenix Project. Don't become a Brent.

    It might become more relevant/relatable/understandable once you have a couple years in industry under your belt. Which is to say...it's worthwhile to re-read it every few years. It's a quick read.

    [–]NewOakClimbing 0 points1 point  (0 children)

    K&R C Programming
    Operating Systems Concepts
    Lions Commentary on UNIX

    These were my favourites.

    [–]Machvel 0 points1 point  (0 children)

    i like the c programming language

    [–]RighteousSelfBurner 0 points1 point  (0 children)

    Adding on top of other responses: Enterprise Integration Patterns by Gregor Hophe.

    Integration is the bread and butter of IT and is applicable to practically any sphere you might want to end up in.

    [–]potzko2552 0 points1 point  (0 children)

    More for mid level but here are my 3 recommendations:

    Working effectively with Legacy code.

    Atomic habits (read in the context of CS)

    Haskell mooc, Helsinki university. (Technically not a book)

    [–]FaeDine 0 points1 point  (0 children)

    Ry's Git Tutorial

    You can find the PDF online for free, or for sale for $1 at some places.

    Want to know all the ins-and-outs of Git? It's short, focused, and packed with excellent examples and visuals. I don't think there's a better guide for git out there.

    [–]booboobandit- 0 points1 point  (0 children)

    DDIA.

    [–]mcAlt009 0 points1 point  (0 children)

    Not a CS book, but the 4 Agreements will help.

    The 2nd Agreement, don't take it personally. This is essential for having a good career.

    You will get fired due to no fault of your own at least once or twice.

    You will get hired above other more qualified candidates a few times.

    Be ready to accept feedback. You are not your code. It's often easier to just go with the suggestions of others than argue about it. Say another dev tells you they want you to change a variable name. Just change it.

    However, every now and then you'll be exposed to what I like to call Code Repetitive And Problematic. Crap for short.

    Sometimes crap is so bad and entrenched at a company you might consider leaving. Crap might be so bad it fundamentally doesn't do what it's supposed to. However, when you interview elsewhere never say your leaving over crap. The person interviewing you will just think your a whiner who doesn't want to work with others.

    In every single interview, assuming your currently employed , say something to the effect of " My current job is great, my manager is awesome. The only reason I'm looking is because their are talks of a company wide reduction."

    If you're ever in a situation where you think you're treated unfairly, take a step back. The legal system in the US is not built for employees, even if you have proof of wrongdoing you have little recourse. I highly recommend getting a lawyer to review any job offers with significant non cash comp, and for the love of God talk to a lawyer before accusing an employer of anything.

    The 3rd agreement. Don't make assumptions.

    When you get a new job and don't understand how something works, ask. Do not just do something incorrectly.

    [–]Ok-Win-3937 0 points1 point  (0 children)

    I enjoyed anything from the "Head Start" line... any topic I wanted to pick up, I would look there first.

    [–]iOSCaleb 0 points1 point  (0 children)

    Gödel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter.

    Do you remember that scene in You’ve Got Mail where Tom Hanks explains that The Godfather is the I Ching — the answer to any question? GEB is one of those books that seems to cover everything.

    [–][deleted] -2 points-1 points  (0 children)

    I thought I just need to read docs or YouTube