Is using built-in chips considered to be "cheating"?
At risk of sounding pedantic, I just have got to ask this as I am very curious to know. The key thing about this course is that we build a computer from scratch (from individual nand gates).
However I've reached Chapter 2 now and was a little surprised we were told to use the built-in chips for the next project. So since it says to use the built-in chips (for efficiency reasons) for this project rather than the chips we actually implemented ourselves in Project 1 I was wondering if you could strictly speaking be said to have built a computer from scratch?
Because we aren't technically building a computer from scratch if we aren't using our own chips? We are using the work of other people who have optimised our implementations of those 15 chips in Project 1 (is this considered "cheating"? Using other people's work?).
I can see the reason behind it, and I understand that the main point of Project 1 is to understand the abstractions which are more important than specific implementations themselves, but if someone could shed more light regarding this, I'd really appreciate it, as it bugs me a little.
Re: Is using built-in chips considered to be "cheating"?
I think that the point is that you have learned enough so that you could build the Hack Computer out of Nand gates. It would, howerver, take a far more powerful computer than a typical PC to simulate the more than 5,000,000 Nand gates required to do so.
There is a small missing piece when you get to chapter 3. You are given the DFF as another primitive to use.
D flip-flops can be made out of Nand gates. If you would like to know how, take a look at this page about Sequential Logic on play-hookey.com. There's a lot of other good stuff on play-hookey, too.
Alto missing from a complete Hack Computer are the frame buffer (Screen memory) and display and keyboard interfaces.
As described, forcing your home PC to simulate every NAND gate is more than many can handle. Still, there's nothing to stop you from trying.... For fun I've created a folder on the side called MyChipset where I have every chip from NOT to RAM64 (so far) and it's admittedly a fun little kick to simulate my higher level chips all the way down.... I'm curious how much further I can get this way :)