
Computer systems
by Randal Bryant, Randal E. Bryant, David R. O'Hallaron · first published 2002
110mentions
67recommended by
83HN commenters
2009–2026first – last mentioned
81% recommend19% neutral
Why HN recommends it
Readable CMU textbook on how programs map to machine level: assembly, processors, memory, and Unix/C systems. Its hands-on labs, like the reverse-engineering bomb lab, suit programmers moving into systems work.
Summarised by Claude from recommending comments
Affiliate links. As an Amazon Associate I earn from qualifying purchases.







I'm currently going through TAOCP[1]. So far, seems pretty good (although I found one mistake in an exercise). Also, I can never recommend Computer Systems: A Programmer's Perspective[1] enough. (Also features a rare mistakes in an exercise or two, but that's detail.) And for network protocols, Comer's Internetworking with TCP/IP[3] was just great (you…
on “Ask HN: I'm looking for a good book on the fundamentals of CS” ↗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.
on “Ask HN: Books you should have read when you start a career in SE / CS?” ↗…http://www.amazon.com/The-Standard-Library-Tutorial-Referenc... 14- http://www.amazon.com/API-Design-C-Martin-Reddy/dp/012385003... 15- http://www.amazon.com/The-Linux-Programming-Interface-Handbo... 16- http://www.amazon.com/Computer-Systems-Programmers-Perspecti... 17- http://www.amazon.com/System-Programming-Unix-Adam-Hoover/dp... 18- http://www.amazon.com/Memory-Programming-Concept-Frantisek-F... 19- http://www.amazon.com/Memory-Management-Implementations-Prog...…
on “I’m writing my own OS” ↗Good, but a little outdated. For general systems overview, as well as introduction to UNIX architecture, I'd actually recommend my textbook, which is the CMU intro systems book, Computer Systems: A Programmer's Perspective[1]. For OS theory, our OS/advanced OS textbooks are fine, but for actual implementation my coworkers recommended The Design of the UNIX Operating System[2], Linux System Programming[3],…
on “Roll Your Own UNIX Clone” ↗…Michael L Scott. Compilers: Principles, Techniques, and Tools by Aho et al. Concepts, Techniques, and Models of Computer Programming by Van Roy. Intro to Computing Systems by Yale Patt & Sanjay Patel. Computer Systems: A Programmer's Perspective by Randal Bryant & David O'Hallaron.
on “Graph of SICP chapters” ↗The following that I have on my bookshelf have helped: Compilers Second Edition [0] Engineering a Compiler, Second Edition [1] Computer Systems: A Programmer's Perspective (3rd Edition) [2] [0]https://www.amazon.com/Compilers-Principles-Techniques-Alfre... [1]https://www.amazon.com/Engineering-Compiler-Second-Keith-Coo... [2]https://www.amazon.com/Computer-Systems-Programmers-Perspect...
on “Ask HN: Resources for learning to write compilers?” ↗…to build a computer yourself. For that I haven’t found anything better than ECS [1]. Please try to build your own extensions to ECS and don’t forget to burn your computer to FPGA. Follow that up with Computer Systems A programmers perspective.[2] My review of ECS [3] [1] https://www.amazon.com/Elements-Computing-Systems-Building-P... [2] https://www.amazon.com/Computer-Systems-Programmers-Perspect... [3] https://www.amazon.com/gp/customer-reviews/RZ4ME4QH22JML/ref...
on “Ask HN: Best book for understanding hardware-software interface” ↗Main updates as of May 2020: Computer Architecture: added Computer Systems: A Programmer's Perspective as first recommendation over nand2tetris. Compilers: Crafting Interpreters added as first recommendation over dragon book. Distributed Systems: added Designing Data-Intensive…
on “Teach Yourself Computer Science” ↗If you want to get into architecture in its own right, Hennessy/Patterson. But I think a far better book on the subject for programmers is "Computer Systems: A Programmer's Perspective." This is a textbook out of Carnegie Mellon that I was exposed to in grad school. It goes into all kinds of details of processor architecture, memory, I/O, assembly programming,…
on “Ask HN: Good books to learn more about computer architecture?” ↗…instruction set. Get very good at gdb. Then learn about memory management and networking protocols. Look up networking libraries in C. To start, I'd say have a good C manual (K&R), have a good book for computer systems (Computer Systems by Randy Bryant, but there are other good ones) and a good documentation on gdb. gdb is where it begins.
on “Ask HN: How do you learn to develop exploits?” ↗Building a CPU in a circuit simulation framework[1] was one of my favorite, and most illuminating, projects I've done. A great book to learn more: http://www.amazon.com/Computer-Systems-Programmers-Perspecti... [1] http://tams-www.informatik.uni-hamburg.de/applets/hades/webd...
on “Inside the ALU of the 8085 microprocessor” ↗Computer Systems: A Programmer's Perspective, Bryant & O'Halloran. http://www.amazon.com/dp/0136108040/ http://csapp.cs.cmu.edu/public/pieces/preface.pdf This is a unique blend of operating systems and hardware architecture,…
on “Modern Microprocessors: A 90 Minute Guide” ↗…Interfaces and Implementations (in conjunction or following working through material on algorithms and data structures), and learn lower level details by working your way through Bryant and O'Halloron's Computer Systems: A Programmer's Perspective. You can learn proofs from Hammack's Book of Proof, freely available online. From there, you can learn algorithms and data structures from Stanford and/or Princeton's courses…
on “Ask HN: How can I become a self-taught software engineer?” ↗The best courses I took in Computer Science (3 years ago) were: - Computer Systems: Building a computer system from scratch (virtually) logic gates to applications https://www.nand2tetris.org/book - Computer Networks and Applications: An overview of network protocols and layers, basically…
on “Ask HN: I'm an incoming freshman to college for a CS major, what should I know?” ↗I needed to understand linkers and object loaders for something at work recently, and I can't recommend Computer Systems: A Programmer's Perspective enough![1] It answered a lot of questions I'd always had about computer systems. I jumped straight into Chapter 7: Linking and learned so much that I read a bunch of other…
on “Where do argc and argv come from?” ↗