The second part is awesome too.
The first part shows how to design an unoptimized and simplistic, but complete and working 16-bit CPU and RAM from logic gates.
The second part builds a whole software stack on top of it using a virtual stack-based VM:
- CPU assembler;
- a (AOT) compiler from the VM opcodes
into the CPU assembly;
- a compiler from the high-level language
called Jack (an educational mix of Java/C
with many complex parts removed) into the
VM opcodes;
- a standard library for the Jack language
(Screen/Keyboard/Output/Math/String/Array/
Sys/Memory classes), including writing your own
memory allocator and drawing lines/circles
and bitmapping glyphs into video memory
for text rendering;
- your own project (usually a simple game and
sometimes marvels like [0]) written in Jack
on top of all of that;
The courses are definitely very challenging and some previous exposure to the topics is desired.