# ranpin/nand2tetris architecture

> Architecture diagram of the GitHub repository ranpin/nand2tetris, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ranpin/nand2tetris
- Repository: https://github.com/ranpin/nand2tetris

## Overview

This repository is an archive of the Nand2tetris course skeleton, not a completed computer-building implementation. The learner’s workflow follows the documented projects: build hardware from logic gates through a complete Hack computer, then work through assembly, VM, Jack, and OS exercises using the supplied tools. The README says only Project 1’s And gate was implemented by the repository owner; most exercises remain templates. Relationships below reflect the README’s course stages and tool descriptions; no source excerpts were available.

Main entry points: [`tools`](https://github.com/ranpin/nand2tetris/tree/main/tools) (Simulators and compilers), [`projects/01`](https://github.com/ranpin/nand2tetris/tree/main/projects/01) (Logic gates), [`projects/02`](https://github.com/ranpin/nand2tetris/tree/main/projects/02) (ALU), [`projects/03`](https://github.com/ranpin/nand2tetris/tree/main/projects/03) (Sequential memory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_hardware["Hardware projects"]
  node_logic["Logic gates"]
  node_alu["ALU"]
  node_memory["Sequential memory"]
  node_machinecode["Machine programs"]
  node_hackcomputer["Hack computer"]
end

subgraph group_software["Software projects"]
  node_assembler["Assembler exercises"]
  node_vmcore["VM translation"]
  node_vmfunctions["VM functions"]
  node_jackprograms["Jack programs"]
  node_jackparse["Jack parsing"]
  node_jackcompile["Jack code generation"]
end

subgraph group_runtime["Course tools"]
  node_tooling["Simulators and compilers"]
  node_builtinchips["Built-in chips"]
  node_builtinvm["Built-in VM code"]
end

subgraph group_platform["Reference platform"]
  node_jackos["Jack OS"]
  node_osreference["OS reference VM"]
end

node_learner(("Learner"))

node_learner -->|"implements exercises"| node_logic
node_learner -->|"implements exercises"| node_alu
node_learner -->|"implements exercises"| node_memory
node_learner -->|"writes programs"| node_machinecode
node_learner -->|"builds computer"| node_hackcomputer
node_learner -->|"implements exercises"| node_assembler
node_learner -->|"implements exercises"| node_vmcore
node_learner -->|"implements exercises"| node_vmfunctions
node_learner -->|"writes programs"| node_jackprograms
node_learner -->|"implements exercises"| node_jackparse
node_learner -->|"implements exercises"| node_jackcompile
node_learner -->|"implements exercises"| node_jackos
node_logic -->|"builds on"| node_alu
node_alu -->|"builds on"| node_memory
node_memory -->|"precedes"| node_machinecode
node_machinecode -->|"precedes"| node_hackcomputer
node_jackparse -->|"precedes"| node_jackcompile
node_tooling -->|"simulates HDL"| node_logic
node_tooling -->|"runs machine code"| node_hackcomputer
node_tooling -->|"runs VM"| node_vmcore
node_tooling -->|"compiles Jack"| node_jackcompile
node_builtinchips -->|"provides chips"| node_tooling
node_builtinvm -->|"provides VM code"| node_tooling
node_osreference -->|"supplies OS code"| node_tooling

click node_logic "https://github.com/ranpin/nand2tetris/tree/main/projects/01"
click node_alu "https://github.com/ranpin/nand2tetris/tree/main/projects/02"
click node_memory "https://github.com/ranpin/nand2tetris/tree/main/projects/03"
click node_machinecode "https://github.com/ranpin/nand2tetris/tree/main/projects/04"
click node_hackcomputer "https://github.com/ranpin/nand2tetris/tree/main/projects/05"
click node_assembler "https://github.com/ranpin/nand2tetris/tree/main/projects/06"
click node_vmcore "https://github.com/ranpin/nand2tetris/tree/main/projects/07"
click node_vmfunctions "https://github.com/ranpin/nand2tetris/tree/main/projects/08"
click node_jackprograms "https://github.com/ranpin/nand2tetris/tree/main/projects/09"
click node_jackparse "https://github.com/ranpin/nand2tetris/tree/main/projects/10"
click node_jackcompile "https://github.com/ranpin/nand2tetris/tree/main/projects/11"
click node_jackos "https://github.com/ranpin/nand2tetris/tree/main/projects/12"
click node_tooling "https://github.com/ranpin/nand2tetris/tree/main/tools"
click node_builtinchips "https://github.com/ranpin/nand2tetris/tree/main/tools/builtInChips"
click node_builtinvm "https://github.com/ranpin/nand2tetris/tree/main/tools/builtInVMCode"
click node_osreference "https://github.com/ranpin/nand2tetris/tree/main/tools/OS"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_logic,node_alu,node_memory,node_machinecode,node_hackcomputer toneBlue
class node_assembler,node_vmcore,node_vmfunctions,node_jackprograms,node_jackparse,node_jackcompile toneAmber
class node_tooling,node_builtinchips,node_builtinvm toneMint
class node_jackos,node_osreference toneRose
class node_learner toneIndigo
```

## Components

### Hardware projects

- [Logic gates](https://github.com/ranpin/nand2tetris/tree/main/projects/01): `projects/01`
- [ALU](https://github.com/ranpin/nand2tetris/tree/main/projects/02): `projects/02`
- [Sequential memory](https://github.com/ranpin/nand2tetris/tree/main/projects/03): `projects/03`
- [Machine programs](https://github.com/ranpin/nand2tetris/tree/main/projects/04): `projects/04`
- [Hack computer](https://github.com/ranpin/nand2tetris/tree/main/projects/05): `projects/05`

### Software projects

- [Assembler exercises](https://github.com/ranpin/nand2tetris/tree/main/projects/06): `projects/06`
- [VM translation](https://github.com/ranpin/nand2tetris/tree/main/projects/07): `projects/07`
- [VM functions](https://github.com/ranpin/nand2tetris/tree/main/projects/08): `projects/08`
- [Jack programs](https://github.com/ranpin/nand2tetris/tree/main/projects/09): `projects/09`
- [Jack parsing](https://github.com/ranpin/nand2tetris/tree/main/projects/10): `projects/10`
- [Jack code generation](https://github.com/ranpin/nand2tetris/tree/main/projects/11): `projects/11`

### Course tools

- [Simulators and compilers](https://github.com/ranpin/nand2tetris/tree/main/tools): `tools`
- [Built-in chips](https://github.com/ranpin/nand2tetris/tree/main/tools/builtInChips): `tools/builtInChips`
- [Built-in VM code](https://github.com/ranpin/nand2tetris/tree/main/tools/builtInVMCode): `tools/builtInVMCode`

### Reference platform

- [Jack OS](https://github.com/ranpin/nand2tetris/tree/main/projects/12): `projects/12`
- [OS reference VM](https://github.com/ranpin/nand2tetris/tree/main/tools/OS): `tools/OS`

### Other components

- **Learner**

## Connections

- Learner → Logic gates: implements exercises (evidence: `README.md`)
- Learner → ALU: implements exercises (evidence: `README.md`)
- Learner → Sequential memory: implements exercises (evidence: `README.md`)
- Learner → Machine programs: writes programs (evidence: `README.md`)
- Learner → Hack computer: builds computer (evidence: `README.md`)
- Learner → Assembler exercises: implements exercises (evidence: `README.md`)
- Learner → VM translation: implements exercises (evidence: `README.md`)
- Learner → VM functions: implements exercises (evidence: `README.md`)
- Learner → Jack programs: writes programs (evidence: `README.md`)
- Learner → Jack parsing: implements exercises (evidence: `README.md`)
- Learner → Jack code generation: implements exercises (evidence: `README.md`)
- Learner → Jack OS: implements exercises (evidence: `README.md`)
- Logic gates → ALU: builds on (evidence: `README.md`)
- ALU → Sequential memory: builds on (evidence: `README.md`)
- Sequential memory → Machine programs: precedes (evidence: `README.md`)
- Machine programs → Hack computer: precedes (evidence: `README.md`)
- Jack parsing → Jack code generation: precedes (evidence: `README.md`)
- Simulators and compilers → Logic gates: simulates HDL (evidence: `README.md`)
- Simulators and compilers → Hack computer: runs machine code (evidence: `README.md`)
- Simulators and compilers → VM translation: runs VM (evidence: `README.md`)
- Simulators and compilers → Jack code generation: compiles Jack (evidence: `README.md`)
- Built-in chips → Simulators and compilers: provides chips (evidence: `README.md`)
- Built-in VM code → Simulators and compilers: provides VM code (evidence: `README.md`)
- OS reference VM → Simulators and compilers: supplies OS code (evidence: `README.md`)
