GiowGiow / Nand2Tetris

Building a Modern Computer From First Principles

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Material Bread logo

From Nand to Tetris

This project is the repository for the Nand2Tetris course

Projects Done:

  • Project 0: Introduction
  • Project 1: Boolean Logic
  • Project 2: Boolean Arithmetic
  • Project 3: Sequential Logic
  • Project 4: Machine Language
  • Project 5: Computer Architecture
  • Project 6: Assembler
  • Project 7: VM I: Stack Arithmetic
  • Project 8: VM II: Program Control
  • Project 9: High-Level Language
  • Project 10: Compiler I: Syntax Analysis
  • Project 11: Compiler II: Code Generation
  • Project 12: Operating System

About the Project

Nand2Tetris, or The Elements of Computing Systems, is a twelve-part course in fundamental computer engineering that steps you through the creation of a computer from the ground up, starting with NAND logic gates and ending with an operating system capable of running a complicated program like Tetris.

The course is available at https://www.nand2tetris.org/.

Here is a brief introduction to the content of the book:

We believe that the best way to understand how computers work is to build one from scratch. With that in mind, we came up with the following concept. Let’s specify a simple but sufficiently powerful computer system, and have the students build its hardware platform and software hierarchy from the ground up, starting with nothing more than elementary logic gates. And while we are at it, let’s do it right.

The book is based on an abstraction-implementation paradigm. Each chapter starts with a Background section, describing relevant concepts and a generic hardware or software system. The next section is always Specification, which provides a clear statement of the system’s abstraction—namely, the various services that it is expected to deliver. Having presented the what, each chapter proceeds to discuss how the abstraction can be implemented, leading to a (proposed) Implementation section. The next section is always Perspective, in which we highlight noteworthy issues left out from the chapter. Each chapter ends with a Project section that provides step-by-step building instructions, testing materials, and software tools for actually building and unit-testing the system described in the chapter.

Building a general-purpose computer from first principles is a huge undertaking. Therefore, we identified a unique educational opportunity not only to build the thing, but also to illustrate, in a hands-on fashion, how to effectively plan and manage large-scale hardware and software development projects. In addition, we sought to demonstrate the ability to construct, through recursive ascent and human reasoning, fantastically complex and useful systems from nothing more than a few primitive building blocks

About

Building a Modern Computer From First Principles


Languages

Language:Assembly 58.7%Language:Scilab 23.4%Language:HTML 11.9%Language:Python 3.4%Language:Shell 1.4%Language:Batchfile 1.0%Language:Hack 0.2%