submited by

Style Pass

Despite being so captivated by computers, I’ve never really understood how they work. This year I’m aiming to solve this mystery by completing the Nand2Tetris course. I recently finished the first part of the course, which consists of 6 projects.

Along the way, I built a 16-bit computer capable of performing integer arithmetic and managing input/output (I/O) operations from a keyboard and screen. I also wrote an assembler to convert programs written in a basic assembly language into binary code for this computer to run. In this post, I’ll share my favorite insights on computing from the course.

It was surprising to learn that all hardware in a computer can be built using only NAND gates. The first two projects made this clear.

Here, I started by building basic logic gates and leveraging these to construct more complex devices, such as an Arithmetic Logic Unit (ALU), that are required for binary arithmetic operations.

This understanding helped me grasp how computers interpret binary programs. Binary instructions can serve as control parameters for hardware devices. For instance, the ALU I built has 6 bits that dictate which arithmetic operations it should perform. These control bits are just inputs to the NAND logic gates that comprise the ALU.

Read more bryananthoni...