This textbook provides a thorough and systematic introduction to designing digital circuits. The author, an eminent software designer, closes the gap between hardware and software design. The exercises include lab work culminating in the design of a simple yet complete computer.