In this class we will go over many concepts that will be new to you. We will try to not pull concepts magically out of a hat and instead explain where things come from; however, because our goal is only to build a computer, we will not go into depth into many of these concepts.
Most of these concepts are not difficult; they are simply ‘different’. As an example, binary arithmetic really is not difficult at all, particularly when compared with decimal arithmetic that you probably already mastered. However, it is ‘different’ so it will appear confusing for a while. In this page I will post handouts and reading suggestions that might help you understand the material better.
Most of the reading material will come either from ‘Code’ by Charles Petzold, or from ‘The elements of Computing Systems’ by Nisan and Schocken. ‘Code’ is not a textbook and is the most accessible of the two books; ‘The elements of Computing Systems’ is a textbook and will take us a few months to read if done properly, working out the exercises.
- analog vs. digital electronics
- electric components: batteries, resistors, lamps, transistors, LED
- reading circuits and assembling circuits
- Code, ch. 4, “Anatomy of a Flashlight“
2. Combinatorial logic Design
- truth tables
- basic logic gates: not, and, or, nand, nor, xor
- multiplexers, demultiplexers
- Code, ch. 10, “Logic and switches“
3. Binary Arithmetic
- binary representation
- binary addition and subtraction
- half-adders, full adders, incrementers
- the arithmetic logic unit (ALU)
- Code, ch. 8, “Alternatives to ten“
4. Sequential logic design
- data flip-flops
- registers, memory, counters
- Code, ch. 14, “Feedback and Flip-flops”
- Code, ch. 16, “An assemblage of memory”