In my class, circa 2001, we were taught about an adder, then used cheap chips in a breadboard with wires and bulbs to show it, then used Logicworks to create a simple version in software. Rinse and repeat for other components, and the final project was to copy and paste those components into a larger logicworks project and hook them up together into a simple 4 bit CPU with a few dozen bytes of RAM. It could understand four instructions if I recall correctly, so very simple programs could run from that RAM.
I don't really remember how to do any of it anymore (but I have no doubt I could research it without much trouble) but it certainly was a good way to demystify a CPU, given you had fully simulated one at the gate level by the end.