Talking
With Computers: Explorations in the Science
and Technology of Computing
by Thomas Dean
Cambridge University Press, Cambridge
UK, 2004
314 pp., illus. 35 b/w. Trade, $ 85.00;
paper, $30.00,
ISBN: 0-521-83452-2; ISBN: 0-521-54204-9.
Reviewed by Martha Patricia Niño
Mojica
Pontificia Universidad Javeriana de Bogotá,
Colombia
ninom@javeriana.edu.co
Thomas Dean is currently Deputy Provost
at Brown University and professor in its
Computer Science Department. His main
research interests include artificial
life and robotics, in particular, control
theory, machine learning, decision science,
and probabilities. He has been involved
with the Executive Council of the American
Association for Artificial Intelligence
(AAAI), Board of the Computing Research
Association (CRA) as the representative
for AAAI, and the board of trustees of
International Joint Conferences of Artificial
Intelligence (IJCAI).
The text is composed by a dynamic compilation
of essays about the interdisciplinary
aspects of computer science. Each chapter
has both conceptual and practical exercises
in a variety of programming languages
including Prolog, Shemehis favorite
dialect of Lisp, Java, Mathematica, C++,
MySQL, and even shell programming.
The first three chapters are about shell
programming; it does not teach you shell
programming but encourages you to learn
it. This knowledge is practical for information
passing, asynchronous processes, and an
overview of organizing and searching information
from databases using MySQL.
Chapters four, five, six, seven, and twelve
focus on how to analyze a vague description
in order to build a specification of what
you want to do with your program. The
important fact of the syntactic variation
among programs is covered. There is also
a description of computational models,
their limitations, and an introduction
to object-oriented programming and its
significance for computers memory.
It shows that is possible to build procedures
that remember using objects that can hold
internal states, and therefore "knowledge".
Chapter nine describes flip-flops, the
basic hardware memory units that make
possible computers memory.
Chapters eight and fourteen talk about
artificial intelligence, its definition,
the role of modern agents, search engines,
spiders, crawlers, or bots driven by artificial
intelligence applications, decision tree
algorithms, the application of probabilities
applications that filter junk e-mail while
they learn the users preferences,
bots that search for precise words in
the net or measure the importance of an
article and make exotic searches of other
types of data different from text.
Chapters ten, eleven, and thirteen treat
additional complex and fascinating topics:
Understanding programs order of
execution, multithreading or dynamic switching
among multiple tasks using, interrupts,
semaphores; Client Server Model that explains
what happens when you click on a link
on the internet, which communication protocols
are involved: HTTP, FTP, SMTP, TELNET,
and a overview of TCP/IP. Programs that
run on the server or on the client side;
Graph Theory, nodes, and the topology
of physical systems useful for routing
of delivering vehicles, robot navigation,
designing cellular networks, laying down
circuits, and problem solving within the
network realm.
Chapter fifteen and sixteen are theoretical
and positive reflections about the relation
between computers and life. Firstly, the
inevitable idea of simulating life through
genetic algorithms that expose the dangers
of Darwins theory of survival of
the fittest. Should programmers pretend
to be God? Secondly, the idea of explaining
mental phenomena in computational terms
that makes us consider essential concepts
such as self, consciousness, intelligence,
and agency.
The book is full of metaphorical language
very useful to understand complex concepts
about computation and make the book enjoyable,
but by "talking with computers"
Dean means programming. If you take the
title of the book too literally, you might
keep expecting to find at least one example
of simple conversational programs made
with Lisp, or some reference to conversational
programs or systems similar to the computer
therapist ELIZA. Although you can read
this book without knowing how to program,
Dean emphasizes that if you want to "talk"
with computers, you will need to learn
how to program. You will definitely obtain
more of the book if you are already familiar
with coding, in Linux and Scheme and if
you are interested in artificial intelligence
or robotics. Awakening your curiosity,
this book gives an excellent informative
landscape of the different skills, concepts,
and applications involved in the broad
field of artificial intelligence. If you
want to explore more about a topic, you
always can find inside the chapters valuable
bibliography to go forward. The book is
full of metaphorical language very useful
to understand complex concepts about computation
and make the book enjoyable. But if you
take the title of the book too literally,
you might keep expecting to find at least
one example of simple conversational programs
made with Lisp, or some reference to conversational
programs or systems similar to the computer
therapist ELIZA.