\chapter*{Preface}
\label{preface}

Let's start by clarifying:  This book is NOT about assembly language
programming.  True, there is assembly language sprinkled throughout the
book, so you will in fact learn assembly language---but only as a means
to a different end, the latter being understanding of computer systems.
Specifically, you will learn about high-level hardware, the large
differences between one machine and the next, and low-level software,
meaning operating systems and to some degree compilers.

I submit that if you pursue a career in the computer field, this may be
one of the most important courses you ever take.  It will help you
decide which computer to buy, whether for your yourself or for your
employer; it will help you understand what makes a computer fast, or
not; it will help you to deal with emergencies.

Here is an example of the latter:  A couple of years ago, a young family
friend spent a summer studying abroad, and of course took lots of
pictures, which she stored on her laptop.  Unfortunately, when she
returned home, her little sister dropped the laptop, and subsequently
the laptop refused to boot up.  A local electronics store wanted \$300
to fix it, but I told the family that I'd do it.  Utilizing my knowledge
of how a computer boots up and how OS file structures work---which you
will learn in this book---I was able to quickly rescue most of the young
lady's photos.

The book features a chapter on multicore processors.  These are of
tremendous importance today, as it is hard to buy a desktop or even a
smart phone without one.  Yet programming a multicore system, for all
but the so-called {\it embarrassingly parallel} applications, requires
an intimate knowledge of the underlying hardware.

Many years ago there was an athlete, Bo Jackson, who played both
professional baseball and football.  A clever TV commercial featuring
him began with ``Bo knows baseball.  Bo knows football'' but then
conceded, no, Bo doesn't know hockey.  Well, if you master the material
in this book, YOU will know computers.

This work is licensed under a Creative Commons Attribution-No Derivative
Works 3.0 United States License.  The details may be viewed at
\url{http://creativecommons.org/licenses/by-nd/3.0/us/}, but in essence
it states that you are free to use, copy and distribute the work, but
you must attribute the work to me and not ``alter, transform, or build
upon'' it.  If you are using the book, either in teaching a class or for
your own learning, I would appreciate your informing me.  I retain
copyright in all non-U.S. jurisdictions, but permission to use these
materials in teaching is still granted, provided the licensing
information here is displayed.  

