The book is divided into three parts. The second part is devoted to combinational logic, and the third part is concerned with finite automata. The book is orginized so that many of its chapters cover specific topics and they are not prerequisite for subsequent chapters.