By Noam Nisan and Shimon Shocken
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).
By David Wentzlaff
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.
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
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.
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).
Learn how computer science can be applied in the real world (and gain a further appreciation for the computing concepts in the meantime).
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.
There are countless CPU simulation programs and sites to explore, many based on the Little Man Computer model. Why not start with this offering?