I recommend "Computer Systems: A Programmer's Perspective", as it also give a good explanation about how a computer works under the hoods.
FROM THE HN SHELF
Computer Systems: A Programmer’s Perspective
Randal E. Bryant and David R. O’Hallaron
Computing · A BOOKTypographic jacket · original cover not fetched
FROM THE SHARED SHELF · 2006–2026 SAMPLE
Computer Systems: A Programmer’s Perspective
Randal E. Bryant, David R. O’Hallaron
16 readers recommend it across 12 discussions
ComputingLearningcomputer systemssystems programmingcomputer architecturecomputer science fundamentals
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.
I like to read a wide variety of genre from fiction to human psychology. For the mind: Nonviolent Communication by Marshall Rosenberg - A great book on how to communcate more effectively with others. Thinking fast and slow by Daniel Kahneman -He is the only psychologist ever to recieve the Nobel Prize if I remember correctly. This book scientifically digests human biases and errors and how they influence our every day lives and decision making. Sometimes it a bit too technical for my taste and I like mostly the first part. (its not an easy read) I rarely had so many Aha-moments. A random walk down on wall street - For investing your income in stocks. What to do and what no to do. Simple, with facts. Sapiens by Harari -Interesting, I remember it was a great read and fun read. Connecting a lot of dots :) On programming: Designing Data-Intensive Applications by Martin Kleppmann - I am failry a junior web dev, so any material that is clear and explains well is a great source of information and inspiration. This is such a book.…
Also recommended in this reply
This is a great book that we used in Comp Sys 1 and 2. I had every intention of reading it after class / graduating but I have yet to do it.
Computer Systems - A Programmer's Perspective https://www.amazon.com/Computer-Systems-Programmers-Perspect... (https://www.amazon.com/Computer-Systems-Programmers-Perspective-3rd/dp/013409266X) Or, any discrete math book because it will take me a lifetime to understand it. If I choose an OS book, my life will be short indeed.
Some books from a few different domains which may be of the type OP is asking for: 1. The Trivium: The Liberal Arts of Logic, Grammar, and Rhetoric : Understanding the Nature and Function of Language by Sister Miriam Joseph. 2. Introduction to Logic by Irving Copi. 3. Computer Systems: A Programmer's Perspective by Randall Bryant and others. 5. Prolog Programming by Ivan Bratko. 6. Information Theory, Inference and Learning Algorithms by David MacKay 7. Geometry by Brennan. 8. Understanding Poetry by Robert Penn Warren and Cleanth Brookes
Also recommended in this reply
Computer Systems: A Programmer's Perspective by Randal E. Bryant (Author), David R. O'Hallaron (Author)
Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron A bit of a look into how your computer works as a whole, from the CPU, through assembly, how C is translated into this assembly, a bit about caches, Amdahl's law, virtual memory, processes, threads, I/O and a dozen other things. <https://www.pearson.com/store/p/computer-systems-a-programme... (https://www.pearson.com/store/p/computer-systems-a-programmer-s-perspective/P100002502659?format=MASTERING)>
Structure and Interpretation of Computer Programs is frequently recommended here. I would especially recommend understanding section 3.2, which I've found very helpful for understanding the environment model of other languages. Computer Systems: A Programmer's Perspective has a lot of good explanations of hardware/os subsystems that can be hard to find detailed explanations of elsewhere. I especially like the sections on virtual memory.
Also recommended in this reply
I’m halfway through the 5 and its an amazing resource.
My take on some which I think should be atleast read once: 1) The unix programming environment 2) The design of the unix operating system 3) The Pragmatic Programmer 4) Programming Pearls 5) Computer Systems: A Programmers Prespective 6) K & R C 7) The art of Unix Programming. PS: I admit my bias towards systems.
Also recommended in this reply
Gravity's Rainbow, Thomas Pynchon (1973). The Platonic ideal of the Postmodern novel that combines a deep understanding of modernity with deep understanding and pessimistic view of technology. Purgatory, Dante (1320). No other work so elegantly grasps Christian Sanctification and it's true difficulties. Philosophical Investigations, Ludwig Wittgenstin (1953). Like Pynchon, Wittgenstein understood quite well the exhausting pedantic nature of modern life. A book that can stand on it's own without having read much philosophy, this work attacks the foundations of most of "Modern" (I would label this as post Medieval philosophy ). Structure and Interpretation of Computer Programs, Abelsson, Sussman, Sussman (1985). For me, the definitive "Programming is what exactly?" book. Computer Systems, a Programmer's Perspective, Bryant & O'Hallaron (2012). The Concrete Systems yin to SICP's abstract yang. BattleCry of Freedom, McPhearson (1988). The best Civil War history in the past generation that also lays bear how much of what we view as modern crisis in the U.S. ( partisanship, horrendous propagandized media coverage, etc ) is as old as the country itself.
Also recommended in this reply
Computer Systems: A Programmer's Perspective by Randal E. Bryant, David R. O'Hallaron http://www.amazon.com/Computer-Systems-Programmers-Perspecti... (http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/013409266X)
Nice recommendation. Looks like the 3rd edition was just published this month. Bryant's blog describes the updates to the 3rd edition here: http://csappbook.blogspot.com/2015/02/the-third-edition-will... (http://csappbook.blogspot.com/2015/02/the-third-edition-will-be-out-march-11.html)
While there are great options mentioned here, I would actually be suggesting that you stick to a very good systems book. A standing knowledge of lower level systems and instruction code will give great depth to your debugging skills. Nothing teaches reverse engineering better than experience. At CMU, we used CS:APP (Computer Systems: A Programmer's Perspective). It's written by Randy Bryant, the same professor who used to teach it. I still have that book, it's updated for Ivy Bridge, and I truly believe that this book changed my approach towards debugging more than any other text. It will push you to the next curve. Towards the end of the book you'd find some programming labs. I highly suggest you do them religiously. Many great men have failed at them.
Computer Systems: A Programmer's Perspective and NAND2Tetris: Elements of Computing Systems are the best books to learn the internals of computer hardware and solidify your understanding of how a computer works. The Pragmatic Programmer - My all time favorite. Awesome book to learn best practices of various aspects in programming. The Code Book: The Evolution Of Secrecy From Mary, Queen Of Scots To Quantum Cryptography, if you have a thing for cryptography.
Also recommended in this reply
Computer Systems: A programmer's perspective Great look at under-the-hood of what happens when a program runs.