This book presents the contents of an introduction course to Computer Science for engineering disciplines where the engineer makes use of the computer not only as an "office tool" but also as an integral part of his designs. This is the case of the curricula in Industrial Automation, Telecommunication, or Aeronautics, where some engineering designs really consist of embedded systems built around a microcontroller. In all these curricula, the engineer needs a deeper insight on the computer basics that goes beyond the classical introduction to programming, which is considered to be complementary to this book. This book introduces the basics of computer structure and organization. The topics covered by the book are Information Coding, Digital Systems, Computer Organization, Machine Language, and the Computer Input/Output. The approach followed to introduce all these topics is the use of Systems Theory and abstraction as a way to deal with complexity: a strong emphasis is put throughout the book in identifying boxes with a well-defined functionality and a set of inputs and outputs. Complex objects, as computers, can be usually decomposed into a set of simpler components interconnected through their inputs and outputs. These components define a lower level of abstraction that allows showing up some implementation details that were not relevant at higher levels of abstraction.