# Coursera: Nand2Tetris

## Descriptions

- Offered by: Hebrew University of Jerusalem
- Prerequisites: None
- Programming Languages: Chosen by the course taker
- Difficulty: 🌟🌟🌟
- Class Hour: 40 hours

As one of the most popular courses on [Coursera](https://www.coursera.org), tens of thousands of people give it a full score, and over four hundred colleges and high schools teach it. It guides the students who may have no preparatory knowledge in computer science to build a whole computer from Nand logic gates and finally run the Tetris game on it. 

Sounds cool, right? It's even cooler when you implement it!

The course is divided into hardware modules and software modules respectively. 

In the hardware modules, you will dive into a world based on 0 and 1, create various logic gates from Nand gates, and construct a CPU step by step to run a simplified instruction set designed by the course instructors. 

In the software modules, you will first write a compiler to compile a high-level language *Jack* which is designed by the instructors into byte codes that can run on virtual machines. Then you will further translate the byte codes into assembly language that can run on the CPU you create in the hardware modules. You will also develop a simple operating system that enables your computer to support GUI. 

Finally, you can use *Jack* to create the Tetris game, compile it into assembly language, run it on your self-made CPU, and interact with it through the OS built by yourself. After taking this course, you will have a comprehensive and profound understanding of the entire computer architecture, which might be extremely helpful to your subsequent learning. 

You may think that the course is too difficult. Don't worry, because it is completely designed for laymen. In the instructors' expectations, even high school students can understand the content. So as long as you keep pace with the syllabus, you can finish it within a month. 

This course extracts the essence of computers while omitting the tedious and complex details in modern computer systems that are designed for efficiency and performance. Surely you will enjoy the elegance and magic of computers in a relaxing and jolly journey. 

## Course Resources

- Course Website: [Nand2Tetris I](https://www.coursera.org/learn/build-a-computer/home/week/1), [Nand2Tetris II](https://www.coursera.org/learn/nand2tetris2/home/welcome)
- Recordings: Refer to course website
- Textbook: [The Elements of Computing Systems: Building a Modern Computer from First Principles (CN-zh version)][book]
- Assignments: 10 projects to construct a computer, refer to the course website for more details 

[book]: https://github.com/PKUFlyingPig/NandToTetris/blob/master/%5B%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F%E8%A6%81%E7%B4%A0%EF%BC%9A%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E6%9E%84%E5%BB%BA%E7%8E%B0%E4%BB%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%5D.(%E5%B0%BC%E8%90%A8).%E5%91%A8%E7%BB%B4.%E6%89%AB%E6%8F%8F%E7%89%88.pdf

## Personal Resources

All the resources and assignments used by @PKUFlyingPig are maintained in [PKUFlyingPig/NandToTetris - GitHub](https://github.com/PKUFlyingPig/NandToTetris). 
