I'm starting from scratch and want to learn both hardware and software, including programming languages. A friend strongly recommended The Elements of Computing Systems by Noam Nisan and Shimon Schocken, while I'm less certain about Seven Languages in Seven Weeks by Bruce A. Tate. Are these good places to begin, or would a different sequence of books, courses, or projects make more sense for self-study? I'd especially appreciate a curriculum that covers programming fundamentals while also giving me some understanding of how computer hardware works.
1 Answer
The Elements of Computing Systems is a strong choice if you want to understand how the layers of a computer fit together. It’s more demanding, but you build components from logic gates upward, so it gives you a genuine hardware-and-software foundation. Pair it with a beginner-friendly programming resource so you’re also writing code regularly.

That sounds like the balance I’m looking for. I’d like to understand what’s happening underneath the code instead of only learning syntax.