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.