xiv
Preface
over the internet using TCP/IP. The state of a system used to be adequately captured by variables
in a differential equation. Now it is likely to be the registers and memory of a computer, or more
abstractly, a process continuation, or a set of concurrent finite state machines. A system used to
be well-modeled by a linear time-invariant transfer function. Now it is likely to be a computation
in a Turing-complete computational engine. Despite these fundamental changes in the medium
with which we operate, the methodology remains robust and powerful. It is the methodology, not
the medium, that defines our field. Our graduates are more likely to write software than to push
electrons, and yet we recognize them as electrical engineers.
Fundamental limits have also changed. Although we still face thermal noise and the speed of light,
we are likely to encounter other limits before we get to these, such as complexity, computability,
chaos, and, most commonly, limits imposed by other human constructions. A voiceband data mo-
dem, for example, faces the telephone network, which was designed to carry voice, and offers as
immutable limits such non-physical constraints as its 3 kHz bandwidth. DSL modems face reg-
ulatory constraints that are more limiting than their physical constraints. Computer-based audio
systems face latency and jitter imposed by the operating system.
The mathematical basis for the discipline has also shifted. Although we still use calculus and
differential equations, we frequently need discrete math, set theory, and mathematical logic. Indeed,
a major theme of this book is to illustrate that formal techniques can be used in a very wide range
of contexts. Whereas the mathematics of calculus and differential equations evolved to describe the
physical world, the world we face as system designers often has non-physical properties that are not
such a good match to this mathematics. Instead of abandoning formality, we need to broaden the
mathematical base.
Again, Abelson and Sussman faced a similar conundrum.
“... we believe that the essential material to be addressed by a subject at this level is
not the syntax of particular programming language constructs, nor clever algorithms
for computing particular functions efficiently, nor even the mathematical analysis of
algorithms and the foundations of computing, but rather the techniques used to control
the intellectual complexity of large software systems.”
This book is about signals and systems, not about large software systems. But it takes a compu-
tational view of signals and systems. It focuses on the methods “used to control the intellectual
complexity,” rather than on the physical limitations imposed by the implementations of old. Appro-
priately, it puts emphasis on discrete-time modeling, which is pertinent to the implementations in
software and digital logic that are so common today. Continuous-time models describe the physical
world, with which our systems interact. But fewer of the systems we engineer operate directly in
this domain.
If imitation is the highest form of flattery, then it should be obvious whom we are flattering. Our
title is a blatant imitation of Structure and Interpretation of Computer Programs. The choice of title
reflects partly a vain hope that we might (improbably) have as much influence as they have. But
more realistically, it reflects a sympathy with their cause. Like us, they faced an identity crisis in
their discipline.