The challenge of commercial, military, and scientific computing is to provide fault tolerance that is both dependable and affordable. The goal of fault-tolerant design is to improve dependability at a reasonable cost. This well-written review of the basic concepts of fault-tolerant computing will be of interest to the uninformed reader. It defines failure, fault, and error when applied to digital systems. Nelson discusses the concepts of reliability and availability in some detail. He then conducts an in-depth examination of the elements of fault-tolerance strategies, including error detection codes, self-checking logic, timing checks, fault containment, repair, and system recovery. Careful reading is required to grasp these concepts. Useful references are provided for readers who want additional information.