This repository contains my solutions and files for the Nand2Tetris course, a project-based course that takes you through building a computer system from scratch. You will design basic logic gates (using NAND gates) and build a complete software stack, including an operating system and programming language. 💻
The Nand2Tetris course is designed to provide a hands-on understanding of computer architecture and software development, guiding you through each phase of creating a working computer system. 🏗️
The Nand2Tetris course is divided into the following projects:
- Project 1: Boolean Logic - Implement basic logic gates using NAND gates. 🔲
- Project 2: Boolean Arithmetic - Build half-adders, full-adders, and other arithmetic logic units. ➕➖
- Project 3: Sequential Logic - Construct flip-flops and registers, enabling the creation of sequential circuits. 🔄
- Project 4: Machine Language - Develop an assembly language and an assembler for a simple computer. 🖥️
- Project 5: Computer Architecture - Build a computer's CPU, memory, and I/O modules. ⚙️
- Project 6: Assembler - Create an assembler that translates symbolic machine code into binary code. 📝
- Project 7: Virtual Machine I - Develop a virtual machine (VM) and a stack-based programming language. 💾
- Project 8: Virtual Machine II - Enhance the VM to support more advanced features. 🔧
- Project 9: High-Level Language - Design a high-level, object-oriented programming language (Jack). 🖋️
- Project 10: Compiler I - Create a Jack-to-VM translator (the first half of the compiler). 🧑💻
- Project 11: Compiler II - Complete the compiler by implementing the code generation phase. ⚡
- Project 12: Operating System - Build a simple operating system for the Hack platform. 🖥️💻
- Project 13: Final Project - Combine everything learned to create your own software project. 🎯
To get started with these projects, clone this repository to your local machine:
git clone https://github.com/Avishek8136/nand2tetris-projects.git
- Java: Required for running some of the tools and simulators. ☕
- Python: Required for various VM and assembler projects. 🐍
- Bash (or Command Prompt): To run the shell scripts or batch files. 💻
Each project folder contains the necessary files (e.g., .hdl
, .asm
, .tst
, and source code files). Follow the instructions provided in the individual project folders for compiling and testing.
For more information on the Nand2Tetris course, visit the official Nand2Tetris website.
This repository is licensed under the MIT License - see the LICENSE file for details.