In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform. In the process, you will gain a deep, hands-on understanding of numerous topics in applied computer science, e.g. stack processing, parsing, code generation, and classical algorithms and data structures for memory management, vector graphics, input-output handling, and various other topics that lie at the very core of every modern computer system.

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course)
Instructor: Shimon Schocken
Top Instructor
72,311 already enrolled
Included with
532 reviews
Skills you'll gain
- Virtual Machines
- Computer Science
- Data Structures
- Computer Engineering
- System Programming
- Software Design
- Algorithms
- Computer Architecture
- Software Architecture
- Program Development
- Computer Programming
- Object Oriented Programming (OOP)
- Computer Graphic Techniques
- Operating Systems
- Skills section collapsed. Showing 10 of 14 skills.
Details to know

Add to your LinkedIn profile
See how employees at top companies are mastering in-demand skills

There are 9 modules in this course
What's included
2 videos1 reading1 programming assignment
What's included
10 videos1 reading1 programming assignment
What's included
11 videos1 reading1 programming assignment
What's included
10 videos1 reading1 programming assignment
What's included
11 videos1 reading1 peer review
What's included
10 videos1 reading1 programming assignment
What's included
12 videos1 reading1 programming assignment
What's included
14 videos1 reading1 programming assignment
What's included
4 videos
Instructor
Offered by
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
Learner reviews
- 5 stars
94.54%
- 4 stars
4.51%
- 3 stars
0.37%
- 2 stars
0.18%
- 1 star
0.37%
Showing 3 of 532
Reviewed on Nov 28, 2020
Part 2 is really more challenge than part 1, but it's worthy. What a course ! I have learned a huge of knowledge of CS for 4 months. Thanks Simon and Noam
Reviewed on Dec 3, 2020
It really deepened my understanding of computers and helped me to be a better programmer. It is more challenging than the first part.
Reviewed on Oct 3, 2024
A great course. It is not easy, assignments are hard and take time. But in the end -- learn so much. Thank you, professors Schoken and Nisan!

Open new doors with Coursera Plus
Unlimited access to 10,000+ world-class courses, hands-on projects, and job-ready certificate programs - all included in your subscription
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Join over 3,400 global companies that choose Coursera for Business
Upskill your employees to excel in the digital economy
Frequently asked questions
Nand to Tetris Part I and Nand to Tetris Part II are two separate and stand alone courses. Although it is recommended to take Part I before taking Part II, you can take any of these courses, in any order that suites you.
The only requirement is programming ability at the level acquired in typical introduction to computer science courses.
We expect learners to submit assignments in any version of Java, or Python. We will assume that you have basic programming ability in these languages, including a basic ability to understand and write simple object-based programs.
More questions
Financial aid available,

