Barnes & Noble.com
Research and Education Association
Although this books culminates in the fundamentals of how to design a computer, including the central processing unit (CPU), the control unit of the CPU, the RAM, the computer's machine and assembly language, and its operating system, incredibly no knowledge beyond basic arithmetic is required.
It takes the reader from the electron level, through to how to use state diagrams to systematically design computer components, all the way to the design of the core operating system (kernel).
Topics include the design of the CPU and its control unit, the design of the CPU's assembly language, data structures (stack, queue, and binary tree), and the kernel. Also, Polish notation, binary search, software engineering, programming techniques, data representation (ASCII), and high level languages are covered. The section comparing three object oriented languages: Visual Basic, C++, and Java is especially well written, and understandable to the novice.
The binary, octal, and hexadecimal number systems, transistors and semiconductors, Boolean algebra, Karnaugh maps, design of logic circuits, flip-flops, memory cells, data bus, and RAM design are actually covered in its sister publication: Essentials of Computer Science I, which also covers clock synchronization, and computer architecture. Both these books stick to fundamental concepts that don't change as clock speeds increase, and RAMs get bigger.
It is this concept of two programs being executed--the program stored in RAM, and the microprogram stored in ROM on the CPU--which make modern computers work. In effect, there is a computer within a computer, the CU, which is sometimes called a micro-computer, within the larger computer, which consists of the CPU, RAM, and input/output devices.