Nand2Tetris is a unique and popular course that teaches students how to build a modern computer system from the ground up. It is an online course created by [[Shimon Schocken]] and [[Noam Nisan]], professors at the Hebrew University of Jerusalem.
The course is divided into two parts: Part 1 focuses on building a hardware platform for a computer, and Part 2 focuses on building the software stack to run on that platform. The goal of the course is to provide students with a holistic understanding of how computers work at both the hardware and software levels.
In Part 1, students start by building basic logic gates using the Nand gate, which is considered as the fundamental building block of digital circuits. They gradually progress to build more complex components such as adders, registers, memory units, and eventually a complete Central Processing Unit (CPU). Students use Hardware Description Language (HDL) to design and simulate these components.
In Part 2, students move on to building a higher-level software stack for their computer system. They start by implementing an assembler program that translates assembly language code into machine code. From there, they build a Virtual Machine (VM) translator that can run programs written in their custom-designed VM language. Finally, they implement a high-level programming language compiler that can translate programs written in Jack (a simple object-oriented language) into VM code.
Throughout the course, students are encouraged to explore various computer science concepts such as data structures, algorithms, compilers, operating systems, and more. They gain hands-on experience by completing numerous programming assignments and projects. The final project involves designing and implementing their very own computer game.
Nand2Tetris is known for its unique approach of starting from basic principles and gradually building up complex systems. It provides students with a deep understanding of how computers work at every level of abstraction. The course has gained popularity among self-learners as well as students in computer science and electrical engineering programs around the world.
# References
```dataview
Table title as Title, authors as Authors
where contains(subject, "Nand2Tetris") or contains(subject, "kernel programming")
```