Hey everyone! I've been getting better at coding, but I'm realizing that I don't know much about how computers actually work under the hood. I've mostly been focused on coding in Python and using Windows, so many aspects of computer functionality feel like a black box to me. This lack of understanding has made me feel a bit behind, especially when exploring Linux. I'm on the lookout for resources that can help me grasp programming from a computer science perspective. Any recommendations would be greatly appreciated! Thanks!
6 Answers
If you're looking for a solid understanding of the relationship between software and hardware, I highly recommend "Modern Operating Systems" by Andrew Tanenbaum. It breaks down how operating systems work in a way that's accessible for non-system programmers. The gradual complexity lets you dive deeper as you're ready, making it easier to grasp tough concepts. As someone who read an older edition myself, I can say it dramatically impacted my engineering mindset. Plus, it starts with simple overviews before diving deeper into the details!
And hey, don't forget about learning C! It's a powerful language that will teach you more about how computers operate at a lower level. Definitely worth considering!
For a more practical take on OS concepts, I'd suggest learning about all the layers that sit on top of the basic OS functionality, like processes, memory management, and file systems. Especially since you have a physics background, viewing it as a system with inputs and constraints can really help demystify things. Familiarizing yourself with the Linux shell and how processes work will also clear up a lot of confusion. A hands-on approach is often much more enlightening than theoretical texts at first!
Have you tried watching the Crash Course Computer Science series? It's aimed at a broad audience but is a great way to get a general overview of how computers work while keeping it engaging. Perfect for passive learning!
If you're into older resources, check out the archived version of pcguide.com for a trip down memory lane. It has a lot of historical hardware info that can help you understand the fundamentals of the components. Always good to learn about the basics, as many principles are still used today! Also, building a small lab with old machines can be a fun way to get hands-on experience. Just take them apart and put them back together; it's a fantastic way to learn firsthand!
You should definitely check out nand2tetris.org. It's a fantastic resource where you can build a working computer from scratch, starting from the transistor level. Though it's been around for a while, the foundational concepts are still very relevant today!
That sounds fun! I love hands-on learning, so this could be a perfect fit for me.

That sounds like a great resource! I'm also interested in RISC-V architecture; does the book cover that?