Since the early 1960's there has developed a great interest, both in industry and academia, in the subjects of maintenance and reliability of digital systems. The increased complexity of current systems makes this interest well justified. Costs associated with the necessity to maintain such systems represent a substantial and growing percentage of total system costs. In this book we consider many of the problems associated with diagnosing failures in digital systems, locating the source of such failures, and the related problem of design of ultra reliable systems - systems which do not fail despite the presence of physical defects (fault tolerance), systems which diagnose their own failures (self checking), and systems which are easily tested. Although many of the problems considered are in theory intractable, in practice most have solution procedures which are practical and effective. The book emphasizes these procedures and when available presents several procedures for each problem. With the increased interest in this subject area courses have been devel oped at many universities. This book is intended as a text for such courses and can also be used for self study by the practicing engineer familiar with digital circuits and systems. The first chapter is an introduction to the subject matter and notation of the book. The next two chapters consider in detail the problems associated with efficient detection and location of fail ures in combinational and sequential circuits respectively.