The Elements of Computing Systems
By Noam Nisan and Shimon Shocken
Price: £25/$35
Modern computing systems are built on a stack of technologies. Right at the top, you have the operating system and high-level languages like Python. These sit above a virtual machine that communicates via assembly language to the hardware, which itself is built on a system of chips and logic gates. Head down and you’ll hit physics.
Professional programmers often don’t know what’s going on deep down in the computer system. They rely on the fact that what they do works.
The Elements of Computing Systems is the book behind the more popular Nand to Tetris course (aka ‘nand2tetris’). Using a hardware simulator to build a NAND (NOT-AND) gate, the latter is then used to build all the other chips and gates that form a computer. You then use that to build a general-purpose computer system, called Hack; and a compiler, called Jack. You use these to build an operating system.
The corresponding website (nand2tetris.org) has projects, software installation, and sample programs made with Jack (including the aforementioned Tetris).
Computer Architecture
By David Wentzlaff
Price: free
Princeton University’s Computer Architecture course is on Coursera and is widely regarded as one of the best ‘all-rounders’. The course covers architecture, pipelining, cache, superscalar, and works its way up to multiprocessors.
The course is led by David Wentzlaff, Associate Professor, Electrical Engineering at Princeton, and he leads you through the concepts. By the end of the course, you will have a good understanding of the different types of processor architectures.
You can enrol on the course for free, although there is no certificate for completion.
Computer Organization
By Parrot
Price: £100 / $130
Computer Organization starts with computer and performance, before moving on to processor unit design and memory system design, then input-output design and pipeline design techniques.
Of particular interest for Raspberry Pi fans is its coverage of RISC – reduced instruction set computers. It’s developed using the GATE (Graduate Aptitude Test in Engineering) syllabus, making it useful for undergraduates. But the course content of use to anybody interested in learning computing architecture.
The price is listed at $132, but it’s frequently on sale (it was $10 at the time we went to press, so look out for that).
More computing books you need
Code: The Hidden Language of Computer Hardware and Software
This book is famous for explaining complex concepts to non-technical people. It doesn’t teach anything about programming, but is a great place for absolute beginners.
But How Do It Know?
This book is designed to bridge the gap between knowing the major parts of a computer and starting a complete course. The first three chapters are available on Google Books (magpi.cc/tQrtY5).
Algorithms to Live By
Learn how computer science can be applied in the real world (and gain a further appreciation for the computing concepts in the meantime).
GeeksforGeeks
Websites are also excellent resources for learning about computing. The GeeksforGeeks website should be bookmarked anyway, but take a look at the Computer Organization and Architecture tutorials section.
Stack Exchange
Stack Exchange has two useful boards for you: Computer Science and Electrical Engineering. Sign up with both.
CPU Simulator
There are countless CPU simulation programs and sites to explore, many based on the Little Man Computer model. Why not start with this offering?