A major objective of the proposed book is to fill the gap between traditional logic design principles and logic design/optimization techniques used in practice. Over the last two decades several techniques for computer-aided design and optimization of logic circuits have been developed. However underlying theories of these techniques are inadequately covered or not covered at all in undergraduate text books. This book covers not only the "classical" material found in current text books but also selected materials that modern logic designers need to be familiar with. Certain sections of the book may therefore be considered somewhat "advanced" for undergraduates. The author's rationale for including these is that undergraduates need to be exposed to newer developments in design earlier rather than later.