Systems can be analog or digital. Analog and digital systems are compared and various digital systems are introduced in Chapter 1. The switching devices used in digital systems are generally two-state devices. So, it is natural to use binary numbers in digital systems. Human beings can interpret and understand data which are available in decimal form. Binary data can be represented concisely using the octal and hexadecimal notations. For this reason, decimal, binary, octal, and hexadecimal number systems, conversion of numbers from one system to another and arithmetic operations in those systems are discussed in Chapter 2. To provide easy communication between man and machine, and also for ease of use in various devices and for transmission, decimal numbers, symbols, and letters are coded in various ways. Several codes and arithmetic operations involving some of those codes are presented in Chapter 3. The basic building blocks used to construct combinational circuits are logic gates. Various logic gates and the functions performed by them are described in Chapter 4. The logic designer must determine how to interconnect the logic gates in order to convert the circuit input signals to the desired output signals. The relationship between the input and output signals can be described mathematically using Boolean algebra. Chapter 5 introduces the basic laws and theorems of Boolean algebra. It also deals with how to convert algebra to logic and logic to algebra. Starting from a given problem statement, the first step in designing a combinational logic circuit is to derive a table or formulate algebraic logic equations which describe the circuit for the realization of the output function. The logic equations which describe the circuit output must generally be simplified. The simplification of logic equations using Boolean algebraic methods is presented in Chapter 5. The simplification of complex functions cannot be performed by the algebraic methods. More systematic methods of simplification of logic expressions, such as the Karnaugh map method and the Quine-McClusky method are introduced in Chapter 6. Various types of digital circuits used for processing and transmission of data such as arithmetic circuits, comparators, code converters, parity checkers/generators, encoders, decoders, multiplexers, and demultiplexers are discussed in detail in Chapter 7. Generally, large digital systems are designed using IC modules. Modular design using ICs is also discussed in Chapter 7. Hazards may occur in digital systems. Various hazards and hazard free realization are also discussed in that chapter. Logic design using Programmable Logic Devices (PLDS) has got many advantages over design using fixed function ICs. Logic design using various combinational PLDS (ROMs, PALS, PLAS, and PROMs) is discussed in Chapter 8. A single threshold gate can be used in place of many logic gates to realize a Boolean expression. Synthesis of threshold and non-threshold functions using threshold gates is discussed in Chapter 9. The basic memory element used in the design of sequential circuits is called flip-flop. Various types of latches and flip-flops, their parameters and the conversion of one flip-flop into another are discussed in Chapter 10. The flip-flops can be interconnected to make registers for data storage and shifting. Various types of shift registers are described in Chapter 11. The counter is a very widely used digital circuit. The flip-flops can be interconnected with gates to form counters. Asynchronous, synchronous, and ring counters and sequence generators are discussed in Chapter 12. The systematic design of sequential machines is very essential. The design procedures of synchronous sequential machines using state diagrams and state tables are outlined in Chapter 13. Sequential circuits (machines) are of two types-Mealy type and Moore type. Minimization of completely specified sequential machines using the partition tehcnique and incompletely specified machines using merger tables and merger graphs are discussed in Chapter 14.