Skip to content

AmitJ98/Nand2Tetris

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nand2Tetris: Building a Computer from First Principles

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.

Author

Amit Joseph

Course Overview

The Nand2Tetris course is divided into 12 projects that progressively build layers of abstraction:

Hardware Platform (Projects 1-5)

  • 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

Software Platform (Projects 6-12)

  • 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

Technologies Used

  • 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

Repository Structure

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

Getting Started

  1. Clone this repository
  2. Navigate to any project folder to explore the implementation
  3. Use the provided test files to verify implementations
  4. Refer to individual project READMEs for specific details

Course Website

This project is based on the course materials from nand2tetris.org, created by Shimon Schocken and Noam Nisan.

License

This project is for educational purposes. Course materials are property of the original authors.

About

My implementation to Nand2Tetris course.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors