This thorough introduction to modern hardware design explores the hierarchical approach to systems, mathematical logic, CMOS, gate design, combinational design, data representation, timing state latches, and register-transfer design. Features many examples and exercises.