The Nand2Tetris course, formally known as The Elements of Computing Systems, is a comprehensive program that empowers learners to construct a complete modern computer system from the ground up. The course encompasses all layers of computer abstraction, including:
- Hardware: From basic Boolean gates to advanced ALUs and memory systems.
- Software: Understanding assemblers, virtual machines, and operating systems.
- High-Level Languages: Designing and implementing functional programming languages.
Here’s a brief overview of the projects I’ve completed:
-
Project 1: Boolean Logic
Implement basic logic gates using NAND gates to understand foundational logic. -
Project 2: Boolean Arithmetic
Create circuits for performing arithmetic operations using logic gates. -
Project 3: Sequential Logic
Design sequential circuits including flip-flops and registers. -
Project 4: Machine Language
Develop a simple machine language and its corresponding instruction set. -
Project 5: Computer Architecture
Assemble the various components into a functioning computer architecture. -
Project 6: Assembler
Build an assembler that converts assembly language code into machine code. -
Project 7: VM I: Stack Arithmetic
Implement a stack-based virtual machine for arithmetic operations. -
Project 8: VM II: Program Control
Extend the virtual machine to include program control features. -
Project 9: High-Level Language - Zombie Shooting Game
Create a simple game to demonstrate high-level language capabilities. -
Project 10: Compiler I: Syntax Analysis
Develop a compiler that performs syntax analysis on high-level code. -
Project 11: Compiler II: Code Generation
Extend the compiler to generate target code from the analyzed syntax.