A challenging goal for a Computer Science student or a hobbyist would be to learn to build a computer on his own. However, it’s a vast paradigm and Computer Science courses or online tutorials do not often cover everything in a single go.
The Nand2Tetris course fills in the gap through an online course of lectures plus necessary software and hardware to build a general-purpose computer from the scratch. Everything is free and open source, allowing you to modify as per your needs. The course has been opened from April 11, 2015.
The first course is designed in 7 weeks and you need to know nothing about computer science to take it! Syllabus by week:
- 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.
Interested? Join the course and get started! It’s fun!