This repository contains my complete implementation of the Nand2Tetris course projects, also known as "The Elements of Computing Systems." This course takes you through building a modern computer system from the ground up, starting with basic logic gates and culminating in a fully functional computer capable of running high-level programs.
Amit Joseph
The Nand2Tetris course is divided into 12 projects that progressively build layers of abstraction:
- Project 01: Boolean Logic - Basic logic gates (And, Or, Not, Mux, DMux, etc.)
- Project 02: Boolean Arithmetic - Arithmetic Logic Unit (ALU) and arithmetic circuits
- Project 03: Sequential Logic - Memory units, registers, and counters
- Project 04: Machine Language - Low-level programming in Hack assembly
- Project 05: Computer Architecture - CPU implementation and complete computer system
- Project 06: Assembler - Translates assembly language to machine code
- Project 07: VM Translator I - Stack arithmetic and memory access commands
- Project 08: VM Translator II - Program flow and function calling commands
- Project 09: High-Level Language - Jack programming language programs
- Project 10: Syntax Analysis - Tokenizer and parser for Jack language
- Project 11: Code Generation - Complete Jack compiler backend
- Project 12: Operating System - Basic OS services and standard library
- HDL (Hardware Description Language): For digital circuit design
- Hack Assembly Language: Low-level programming for the Hack computer
- Python: For building software tools (assembler, VM translator, compiler)
- Jack Language: High-level object-oriented programming language
Each numbered folder contains a complete implementation of the corresponding project, including:
- Source code implementations
- Test files and expected outputs
- Documentation and project-specific READMEs
- Clone this repository
- Navigate to any project folder to explore the implementation
- Use the provided test files to verify implementations
- Refer to individual project READMEs for specific details
This project is based on the course materials from nand2tetris.org, created by Shimon Schocken and Noam Nisan.
This project is for educational purposes. Course materials are property of the original authors.