From Nand to Tetris Part I
Coursera
Course Summary
Build a modern computer system, starting from first principles. The course consists of six weekly hands-on projects that take you from constructing elementary logic gates all the way to building a fully functioning general purpose computer. In the process, you will learn -- in the most direct and intimate way -- how computers work, and how they
-
+
Course Description
This course is a fascinating 7-week voyage of discovery in which you will go all the way from Boolean algebra and elementary logic gates to building a central processing unit, a memory system, and a hardware platform, leading up to a general-purpose computer that can run any program that you fancy. In the process of building this computer you will become familiar with many important hardware abstractions, and you will implement them, hands on. But most of all, you will enjoy the tremendous thrill of building a complex and useful system from the ground up.
You will build all the hardware modules on your home computer, using a Hardware Description Language (HDL), learned in the course, and a hardware simulator, supplied by us. A hardware simulator is a software system that enables building and simulating gates and chips before actually committing them to silicon. This is exactly what hardware engineers do in practice: they build and test computers in simulation, using HDL and hardware simulators.
-
+
Course Syllabus
Week 0: course introduction and overview, the roles of abstraction and implementation in systems design, the road ahead.
Week 1: Introduction to Boolean functions, gate logic, Hardware Description Language (HDL), and hardware simulation. Project: build a set of 15 elementary logic gates that will serve as the building blocks of subsequent chips.
Week 2: Binary numbers, binary addition, the two's complement methods, combinational logic. Project: build a family of adder chips leading up to an Arithmetic Logic Unit (ALU).
Week 3: Flip-flops, clocks, memory systems, sequential logic. Project: build a family of storage units from 1-bit registers to n-bit registers to Random Access Memories (RAM) of arbitrary sizes.
Week 4: Machine language, binary and symbolic instructions, input and output handling, using an assembler. Project: write some low-level assembly programs and run them on a supplied CPU emulator.
Week 5: Computer organization, the Von Neumann architecture, the fetch-execute cycle. Project: build the Hack CPU and computer system, using all the chips that were built in the previous projects.
Week 6: Assembly languages, assemblers, parsing, symbol tables, code generation, the translation process. Project: build an assembler that translates Hack symbolic programs into Hack executable (binary) code. -
+
Recommended Background
In order to take this course you have to know... well... absolutely nothing about computer science or engineering! All the knowledge necessary to build the computer and complete this course successfully is given in the course lectures and projects. The only pre-requisites are curiosity and passion to build a cool working example of the most important invention of the 20th century.
-
+
Course Format
The course consists of 7 weeks of instruction and self-study. In each week you will have to watch several video lectures that are about 10-15 minutes long. You will then have to do and submit a weekly project. The course requires about 5-10 hours of work per week.
-
+
Suggested Reading
This course is completely self-contained and requires no additional sources of information or reference. Students who wish to do so can refer to the book The Elements of Computing Systems, written by the course instructors and published by MIT Press.