Emile Silvis

I built a computer from scratch

Yes, really. From scratch, using only the modest NAND gate as a fundamental building block.

From there, I built a set of ever-more-complex components: first, Boolean logic gates (like AND, OR, and XOR), then the multiplexer and demultiplexer. Subsequently, I expanded these one-bit gates into 16-bit buses. With these, I constructed adders, an arithmetic logic unit and memory chips (RAM). Finally I built the central processing unit and integrated it with the memory chips to form a fully-working computer architecture capable of executing instructions in binary machine code.

This binary machine code, in turn, was assembled from assembly language by an assembler. The VM translator turns virtual machine code into assembly language, and the compiler turns Jack (a pedagogical programming language) into virtual machine code.

This was all topped off by implementing a set of operating system functions (which was a good foray into algorithm design).

Perhaps now is a good moment to pause and mention www.nand2tetris.org. It's an online university-level course that takes you on a journey to build a computer from first principles—from NAND gates all the way to Tetris. It can be taken as two Coursera courses (1, 2), the first focusing on the hardware layer and the second on the software hierarchy. Each module comes with a hands-on project to complete.

NAND2Tetris homepage

I've learnt tonnes. And I've found this journey quite beautiful. It's remarkable to think that most of our technological world is axiomatically implied by the humble NAND gate. You have to appreciate that kind of elegance 😊

©️ 2025 Emile Silvis