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

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

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.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

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.
This is a self-contained course: all the knowledge necessary to succeed in the course and build the various systems will be given as part of the learning experience. The only prerequisite is knowledge of programming at the level acquired in introduction to computer science courses. All the software tools and materials that are necessary to complete the course will be supplied freely after you enrol in the course.
The course consists of six modules, each comprising a series of video lectures, and a project. You will need about 2-3 hours to watch each module's lectures, and about 15 hours to complete each one of the six projects. The course can be completed in six weeks, but you are welcome to take it at your own pace. You can watch a TED talk about this course by Googling "nand2tetris TED talk".

Syllabus

WEEK 1: Getting Started; Machine Language; Virtual Machine I: Stack Arithmetic
WEEK 2: Virtual Machine II: Program Control
WEEK 3: High-Level Language
WEEK 4: Compiler I: Syntax Analysis
WEEK 5: Compiler II: Code Generation
WEEK 6: Operating System
WEEK 7: Postscript: More Fun to Go

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Image and video processing: From Mars to Hollywood with a stop at the hospital (Coursera) Coursera
Duke University

Image and video processing: From Mars to Hollywood with a stop at the hospital (Coursera)

In this course, you will learn the science behind how digital images and video are made, altered, stored, and used. We will look at the vast world of digital imaging, from how computers and digital cameras form images to how digital special effects are used in Hollywood movies to how the Mars Rover was able to send photographs across millions of miles of space.

Jun 15th 2026
5-12 Weeks
Capstone Project: Teaching Impacts of Technology (Coursera) Coursera
University of California, San Diego

Capstone Project: Teaching Impacts of Technology (Coursera)

In this project-based course you’ll review the Advanced Placement Computer Science Principles course and exam description guide to prepare for the “Explore Task”, where students must research a recent computing innovation and and analyze its impacts on the world. You’ll also review the description of this task from the student perspective and complete the task yourself. Then you’ll assess sample secondary student work by following the APCSP scoring guidelines as well as provide feedback to a fellow learner on their submitted task and receive the same from fellow learners.

Jun 17th 2026
5-12 Weeks
Using Databases with Python (Coursera) Coursera
University of Michigan

Using Databases with Python (Coursera)

This course will introduce students to the basics of the Structured Query Language (SQL) as well as basic database design for storing data as part of a multi-step data gathering, analysis, and processing effort. The course will use SQLite3 as its database. We will also build web crawlers and multi-step data gathering and visualization processes. We will use the D3.js library to do basic data visualization.

Jun 15th 2026
5-12 Weeks
Data Structures and Performance (Coursera) Coursera
University of California, San Diego

Data Structures and Performance (Coursera)

How do Java programs deal with vast quantities of data? Many of the data structures and algorithms that work with introductory toy examples break when applications process real, large data sets. Efficiency is critical, but how do we achieve it, and how do we even measure it? This is an intermediate Java course. We recommend this course to learners who have previous experience in software development or a background in computer science, and in particular, we recommend that you have taken the first course in this specialization (which also requires some previous experience with Java).

Jun 15th 2026
5-12 Weeks
Algorithmic Thinking (Part 1) (Coursera) Coursera
Rice University

Algorithmic Thinking (Part 1) (Coursera)

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This two-part class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems.

Jun 15th 2026
4 Weeks
Database Management Essentials (Coursera) Coursera
University of Colorado System

Database Management Essentials (Coursera)

Database Management Essentials provides the foundation you need for a career in database development, data warehousing, or business intelligence, as well as for the entire Data Warehousing for Business Intelligence specialization. In this course, you will create relational databases, write SQL statements to extract information to satisfy business reporting requests, create entity relationship diagrams (ERDs) to design databases, and analyze table designs for excessive redundancy.

Jun 15th 2026
5-12 Weeks
Learn to Teach Java: Boolean Expressions, If Statements, and Iteration (Coursera) Coursera
University of California, San Diego

Learn to Teach Java: Boolean Expressions, If Statements, and Iteration (Coursera)

Learn to program with Boolean Expressions, If Statement, and For and While Loops in Java, and prepare to teach others using the free, online interactive CS Awesome textbook. In this course for teachers we'll guide you both in learning Java concepts and skills but also in how to effectively teach those to your students.

Jun 17th 2026
4 Weeks
Programming Languages, Part A (Coursera) Coursera
University of Washington

Programming Languages, Part A (Coursera)

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language -- and in learning new ones.

Jun 15th 2026
5-12 Weeks
C++程序设计 (Coursera) Coursera
Peking University

C++程序设计 (Coursera)

讲授C++语言中和面向对象有关的概念和语法,如类和对象、运算符重载、继承和多态、类模板和算法模板、标准模板库等。目标是使得学生能够用C++语言,以面向对象的方法编写可维护性、可扩充性好的,较大规模的程序,初步领会面向对象程序设计方法的优势所在。

Jun 15th 2026
5-12 Weeks