This repository contains my solutions to the projects in the Nand2Tetris course. The course is designed to teach computer science students how to build a modern computer system from the ground up, starting with the basic building blocks of logic gates and working up to a fully functional operating system.
Only projects 1 to 10 are implemented.
The assembler, compiler etc are written in Java
.
The course is divided into two parts:
- Building a computer from the ground up, starting with the basic building blocks of logic gates and working all the way up to a fully functional computer system.
- Writing software for the computer, including an assembler, a virtual machine, a compiler, and an operating system.
The course is divided into 12 folders, each containing the projects for a different part of the course. Here's a brief description of each folder:
01
: Boolean Logic - Building basic logic gates and combinational circuits.02
: Boolean Arithmetic - Building an Arithmetic Logic Unit (ALU).03
: Sequential Logic - building bits, registers and memory.04
: Machine Language - Writing low-level machine language programs to run on the computer.05
: Computer Architecture - building the finished computer, including a CPU, memory.06
: Assembler - Develop an assembler to translate programs written in Hack assembly language into machine language.07
: VM I: Stack Arithmetic - Development of a VM to assembler translator, implementing arithmetic-logical and push/pop instructions.08
: VM II: Program Control - Finishing the VM to assembler translator with branching and function commands.09
: High-Level Language - Writing a program in Jack10
: Compiler I: Syntax Analysis - Develop a compiler for Jack, focusing only on syntax analysis.11
: Compiler II: Code Generation - Extend the syntax analyser into a full Jack compiler.12
: Operating System - Implementation of the Jack OS
Go to nand2tetris.org and download the Nand2tetris Software Suite
.
You can have a look at this repo if you get stuck somewhere.
This course was created by Noam Nisan and Shimon Schocken, and is available for free at nand2tetris.org. I highly recommend it to anyone interested in computer science or computer engineering.