paint-brush
📚3 Must Read Books for Programmers from Non-traditional Backgroundby@devgrowth
1,250 reads
1,250 reads

📚3 Must Read Books for Programmers from Non-traditional Background

by devgrowth.techDecember 22nd, 2022
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The three books that I recommend are "Code: The Hidden Language of Computer Hardware and Software"; "Computer Systems: A Programmer's Perspective"; and "Operating Systems: Three Easy Pieces."
featured image - 📚3 Must Read Books for Programmers from Non-traditional Background
devgrowth.tech HackerNoon profile picture


1️⃣ Code: The Hidden Language of Computer Hardware and Software

Code: The Hidden Language of Computer Hardware and Software


This is a classic book I believe should be the first thing to read when you want to learn about how computer works. Even though the first edition was published nearly two decades ago, the content is still relevant, and good news is that the second edition was just released Aug 2022 with new chapters on clock, ALU etc, and the companion website, CodeHiddenLanguage.com, uses animated graphics of key circuits in the book to make computers even easier to comprehend.


It covers how technology involved and computer was built, how do hardware components work together to run a program, the book answered my questions about what happens in a computer behind the scenes, and it laid foundation for me to grasp higher abstraction level mechanism such as operating system


2️⃣ Computer Systems: A Programmer's Perspective

Computer Systems: A Programmer's Perspective


This is actually a text book used at Carnegie Mellon, it explains the underlying elements common among all computer systems and how they affect general application performance but from the programmer’s perspective.


It’s a big book and indeed pricy, I was following the corresponding open sources course online, after a while, I just thought I better go with the hard copy so I can flip through them and work on the exercises. But if you don’t want to spend the money on hard copy, learn with the open source course videos should be equivalent from a self learning perspective.


The book has three main parts: program structure and execution, running programs on a system, interaction and communication between programs. I did not read this book from start to end, but rather dive into the chapters I want to learn more details or curious about, since I’ve already have some basic ideas after reading the first book. Depends on your learning style and your knowledge system, you can go through the chapters sequentially or read the first book and use this as some sort of advanced learning material.


The benefit of the content in this book/course at least for me is that it provided extensive coverage on how a computer works and the practice problems to test if you really understand a concept.


3️⃣ Operating Systems: Three Easy Pieces

Operating Systems: Three Easy Pieces


This book is the culmination of years of teaching intro to operating systems by by  Remzi H and Andrea C Arpaci-Dusseau  to both undergraduates and graduates at the University of Wisconsin-Madison Computer Sciences department.


It has three pieces: virtualization, concurrency, persistence, these are the fundamental concepts in OS construction. I find it works great with the operating system course the authors are teaching. Note that on the course page it lists CSAPP similar course as its prerequisite.


After learning the fundamentals I’ve found it helps when I look at OS level metrics to identify system bottlenecks, and it was easier to understand the new technologies such as Docker, I also think learnings at this abstraction level enables me to have a clearer picture when I debug or design a system, or even during system design interviews.



Which one are you mostly interested in? Hope it helps for starting to get a better understanding of computer systems! 🤓