And then, following this advice, we start with this lowly, humble NAND gate, and we walk our students through an elaborate sequence of projects in which they gradually build a chip set, a hardware platform, an assembler, a virtual machine, a basic operating system and a compiler for a simple, Java-like language that we call "JACK."