This book is designed for students in colleges and universities, as well as others in Software industry and public service, who seek to learn the essentials of Computer Science and high-growth Information Technology. No prerequisite knowledge is necessary, although an understanding of basic Computing principles will prove useful. Readers benefit from the book's integrated set of concepts, examples and recommended sources for more information. This book is designed to be used as a textbook by students of Computer Science and Information Technology either in a classroom or for self-study. A major characteristic of the book is that it relies on teaching a few carefully selected principles in depth, rather than give an overview of a large number of techniques.