100% found this document useful (5 votes)
102 views61 pages

Computing Handbook Computer Science and Software Engineering 3ed. Edition Allen B Tucker PDF Download

The document provides a comprehensive overview of the 'Computing Handbook: Computer Science and Software Engineering, 3rd Edition' edited by Allen B. Tucker and others. It includes various topics in computer science, algorithms, architecture, computational science, intelligent systems, networking, operating systems, and programming languages. The handbook serves as a valuable resource for students and professionals in the field of computer science and software engineering.

Uploaded by

oidllpgqct749
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (5 votes)
102 views61 pages

Computing Handbook Computer Science and Software Engineering 3ed. Edition Allen B Tucker PDF Download

The document provides a comprehensive overview of the 'Computing Handbook: Computer Science and Software Engineering, 3rd Edition' edited by Allen B. Tucker and others. It includes various topics in computer science, algorithms, architecture, computational science, intelligent systems, networking, operating systems, and programming languages. The handbook serves as a valuable resource for students and professionals in the field of computer science and software engineering.

Uploaded by

oidllpgqct749
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 61

Computing handbook computer science and software

engineering 3ed. Edition Allen B Tucker pdf


download

https://ebookname.com/product/computing-handbook-computer-
science-and-software-engineering-3ed-edition-allen-b-tucker/

Get the full ebook with Bonus Features for a Better Reading Experience on ebookname.com
Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Software Engineering and Testing An Introduction


Computer Science 1st Edition B. B. Agarwal

https://ebookname.com/product/software-engineering-and-testing-
an-introduction-computer-science-1st-edition-b-b-agarwal/

The biomedical engineering handbook 3 3ed Edition


Bronzino J. (Ed.)

https://ebookname.com/product/the-biomedical-engineering-
handbook-3-3ed-edition-bronzino-j-ed/

Frontiers in Education Computer Science and Computer


Engineering 1st Edition Hamid R. Arabnia

https://ebookname.com/product/frontiers-in-education-computer-
science-and-computer-engineering-1st-edition-hamid-r-arabnia/

Handbook of Indexing Techniques A Guide for Beginning


Indexers Fifth Edition Linda K. Fetters

https://ebookname.com/product/handbook-of-indexing-techniques-a-
guide-for-beginning-indexers-fifth-edition-linda-k-fetters/
Barbaro A Nation s Love Story First Edition Pamela K.
Brodowsky

https://ebookname.com/product/barbaro-a-nation-s-love-story-
first-edition-pamela-k-brodowsky/

The Oxford Handbook of Business History Oxford


Handbooks Oxford

https://ebookname.com/product/the-oxford-handbook-of-business-
history-oxford-handbooks-oxford/

Concise Guide to Brief Dynamic and Interpersonal


Therapy 2nd edition Concise Guides Hanna Levenson

https://ebookname.com/product/concise-guide-to-brief-dynamic-and-
interpersonal-therapy-2nd-edition-concise-guides-hanna-levenson/

New Media for a New China 1st Edition James F. Scotton

https://ebookname.com/product/new-media-for-a-new-china-1st-
edition-james-f-scotton/

The Project Management Tool Kit 100 Tips and Techniques


for Getting the Job Done Right 2nd Edition Tom Kendrick

https://ebookname.com/product/the-project-management-tool-
kit-100-tips-and-techniques-for-getting-the-job-done-right-2nd-
edition-tom-kendrick/
Broadcast Data Systems 1st Edition Peter L. Mothersole

https://ebookname.com/product/broadcast-data-systems-1st-edition-
peter-l-mothersole/
COMPUTING
HANDBOOK
THIRD EDITION
Computer Science and
Software Engineering
COMPUTING
HANDBOOK
THIRD EDITION
Computer Science and
Software Engineering

EDITED BY

Teofilo Gonzalez
University of California
Santa Barbara, California, USA

Jorge Díaz-Herrera
Keuka College
Keuka Park, New York, USA

EDITOR-IN-CHIEF

Allen Tucker
Bowdoin College
Brunswick, Maine, USA
MATLAB® is a trademark of The MathWorks, Inc. and is used with permission. The MathWorks does not warrant the accuracy
of the text or exercises in this book. This book’s use or discussion of MATLAB® software or related products does not consti-
tute endorsement or sponsorship by The MathWorks of a particular pedagogical approach or particular use of the MATLAB®
software.

CRC Press
Taylor & Francis Group
6000 Broken Sound Parkway NW, Suite 300
Boca Raton, FL 33487-2742

© 2014 by Taylor & Francis Group, LLC


CRC Press is an imprint of Taylor & Francis Group, an Informa business

No claim to original U.S. Government works


Version Date: 20140117

International Standard Book Number-13: 978-1-4398-9853-6 (eBook - PDF)

This book contains information obtained from authentic and highly regarded sources. Reasonable efforts have been made to
publish reliable data and information, but the author and publisher cannot assume responsibility for the validity of all materials
or the consequences of their use. The authors and publishers have attempted to trace the copyright holders of all material repro-
duced in this publication and apologize to copyright holders if permission to publish in this form has not been obtained. If any
copyright material has not been acknowledged please write and let us know so we may rectify in any future reprint.

Except as permitted under U.S. Copyright Law, no part of this book may be reprinted, reproduced, transmitted, or utilized in any
form by any electronic, mechanical, or other means, now known or hereafter invented, including photocopying, microfilming,
and recording, or in any information storage or retrieval system, without written permission from the publishers.

For permission to photocopy or use material electronically from this work, please access www.copyright.com (http://www.copy-
right.com/) or contact the Copyright Clearance Center, Inc. (CCC), 222 Rosewood Drive, Danvers, MA 01923, 978-750-8400.
CCC is a not-for-profit organization that provides licenses and registration for a variety of users. For organizations that have been
granted a photocopy license by the CCC, a separate system of payment has been arranged.

Trademark Notice: Product or corporate names may be trademarks or registered trademarks, and are used only for identifica-
tion and explanation without intent to infringe.
Visit the Taylor & Francis Web site at
http://www.taylorandfrancis.com

and the CRC Press Web site at


http://www.crcpress.com
Contents

Preface to the Computing Handbook Set�������������������������������������������������������������� xiii


Preface to Volume I: Computer Science and Software Engineering���������������������� xv
Acknowledgments�����������������������������������������������������������������������������������������������xxvii
Editors������������������������������������������������������������������������������������������������������������������� xxix
Contributors���������������������������������������������������������������������������������������������������������xxxi

Part I Overview of Computer Science


1 Structure and Organization of Computing��������������������������������������������������� 1-1
Peter J. Denning
2 Computational Thinking������������������������������������������������������������������������������� 2-1
Valerie Barr

Part II Algorithms and Complexity


3 Data Structures����������������������������������������������������������������������������������������������� 3-1
Mark Allen Weiss
4 Basic Techniques for Design and Analysis of Algorithms���������������������������� 4-1
Edward M. Reingold
5 Graph and Network Algorithms�������������������������������������������������������������������� 5-1
Samir Khuller and Balaji Raghavachari
6 Computational Geometry������������������������������������������������������������������������������ 6-1
Marc van Kreveld
7 Complexity Theory......................................................................................... 7-1
Eric W. Allender, Michael C. Loui, and Kenneth W. Regan
8 Formal Models and Computability���������������������������������������������������������������� 8-1
Tao Jiang, Ming Li, and Bala Ravikumar

v
vi Contents

9 Cryptography������������������������������������������������������������������������������������������������� 9-1
Jonathan Katz
10 Algebraic Algorithms����������������������������������������������������������������������������������� 10-1
Ioannis Z. Emiris, Victor Y. Pan, and Elias P. Tsigaridas
11 Some Practical Randomized Algorithms and Data Structures������������������� 11-1
Michael Mitzenmacher and Eli Upfal
12 Approximation Algorithms and Metaheuristics����������������������������������������� 12-1
Teofilo F. Gonzalez
13 Combinatorial Optimization����������������������������������������������������������������������� 13-1
Vijay Chandru and M.R. Rao
14 Graph Drawing��������������������������������������������������������������������������������������������� 14-1
Ioannis G. Tollis and Konstantinos G. Kakoulis
15 Pattern Matching and Text Compression Algorithms�������������������������������� 15-1
Maxime Crochemore and Thierry Lecroq
16 Distributed Algorithms�������������������������������������������������������������������������������� 16-1
Dan Alistarh and Rachid Guerraoui

Part III Architecture and Organization


17 Digital Logic�������������������������������������������������������������������������������������������������� 17-1
Miriam Leeser and James Brock
18 Memory Systems������������������������������������������������������������������������������������������� 18-1
Yoongu Kim and Onur Mutlu
19 Storage Systems�������������������������������������������������������������������������������������������� 19-1
Alexander Thomasian
20 High-Speed Computer Arithmetic�������������������������������������������������������������� 20-1
Earl E. Swartzlander, Jr.
21 Input/Output Devices and Interaction Techniques������������������������������������ 21-1
Ken Hinckley, Robert J.K. Jacob, Colin Ware, Jacob O. Wobbrock,
and Daniel Wigdor
22 Performance Enhancements������������������������������������������������������������������������22-1
Joseph Dumas
23 Parallel Architectures����������������������������������������������������������������������������������23-1
Michael J. Flynn and Kevin W. Rudd
24 Multicore Architectures and Their Software Landscape����������������������������24-1
Raphael Poss
25 DNA Computing������������������������������������������������������������������������������������������25-1
Hieu Bui, Harish Chandranm, Sudhanshu Garg, Nikhil Gopalkrishnan,
Reem Mokhtar, John Reif, and Tianqi Song
Contents vii

Part IV Computational Science and Graphics


26 Computational Electromagnetics����������������������������������������������������������������26-1
J.S. Shang
27 Computational Fluid Dynamics������������������������������������������������������������������ 27-1
David A. Caughey
28 Computational Astrophysics������������������������������������������������������������������������28-1
Jon Hakkila, Derek Buzasi, and Robert J. Thacker
29 Computational Chemistry��������������������������������������������������������������������������� 29-1
J. Phillip Bowen, Frederick J. Heldrich, Clyde R. Metz, Shawn C. Sendlinger, Neal E.
Tonks, and Robert M. Panoff
30 Computational Biology: The Fundamentals of Sequence-Based
Techniques���������������������������������������������������������������������������������������������������� 30-1
Steven M. Thompson
31 Terrain Modeling for the Geosciences��������������������������������������������������������� 31-1
Herman Haverkort and Laura Toma
32 Geometric Primitives����������������������������������������������������������������������������������� 32-1
Lee Staff, Gustavo Chávez, and Alyn Rockwood
33 Computer Animation����������������������������������������������������������������������������������� 33-1
Nadia Magnenat Thalmann and Daniel Thalmann

Part V Intelligent Systems


34 Paraconsistent Logic-Based Reasoning for Intelligent Systems����������������� 34-1
Kazumi Nakamatsu
35 Qualitative Reasoning���������������������������������������������������������������������������������� 35-1
Kenneth Forbus
36 Machine Learning���������������������������������������������������������������������������������������� 36-1
Stephen Marsland
37 Explanation-Based Learning������������������������������������������������������������������������ 37-1
Gerald DeJong
38 Search����������������������������������������������������������������������������������������������������������� 38-1
Danny Kopec, James L. Cox, and Stephen Lucci
39 Planning and Scheduling����������������������������������������������������������������������������� 39-1
Roman Barták
40 Natural Language Processing���������������������������������������������������������������������� 40-1
Nitin Indurkhya
41 Understanding Spoken Language����������������������������������������������������������������� 41-1
Gokhan Tur, Ye-Yi Wang, and Dilek Hakkani-Tür
viii Contents

42 Neural Networks������������������������������������������������������������������������������������������ 42-1


Michael I. Jordan and Christopher M. Bishop
43 Cognitive Modeling�������������������������������������������������������������������������������������� 43-1
Eric Chown
44 Graphical Models for Probabilistic and Causal Reasoning������������������������ 44-1
Judea Pearl

Part VI Networking and Communication


45 Network Organization and Topologies������������������������������������������������������� 45-1
William Stallings
46 Routing Protocols����������������������������������������������������������������������������������������� 46-1
Radia Perlman
47 Access Control����������������������������������������������������������������������������������������������� 47-1
Sabrina De Capitani di Vimercati, Pierangela Samarati, and Ravi Sandhu
48 Data Compression���������������������������������������������������������������������������������������� 48-1
 . Ufuk Nalbantog lu and K. Sayood
O
49 Localization in Underwater Acoustic Sensor Networks����������������������������� 49-1
Baozhi Chen and Dario Pompili
50 Semantic Web����������������������������������������������������������������������������������������������� 50-1
Pascal Hitzler and Krzysztof Janowicz
51 Web Search Engines: Practice and Experience�������������������������������������������� 51-1
Tao Yang and Apostolos Gerasoulis

Part VII Operating Systems


52 Process Synchronization and Interprocess Communication���������������������� 52-1
Craig E. Wills
53 Thread Management for Shared-Memory Multiprocessors������������������������ 53-1
Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, and Henry M. Levy
54 Virtual Memory������������������������������������������������������������������������������������������� 54-1
Peter J. Denning
55 Secondary Storage and Filesystems������������������������������������������������������������� 55-1
Marshall Kirk McKusick
56 Performance Evaluation of Computer Systems������������������������������������������� 56-1
Alexander Thomasian
57 Taxonomy of Contention Management in Interconnected Distributed
Systems���������������������������������������������������������������������������������������������������������� 57-1
Mohsen Amini Salehi, Jemal Abawajy, and Rajkumar Buyya
Contents ix

58 Real-Time Computing���������������������������������������������������������������������������������� 58-1


Sanjoy Baruah
59 Scheduling for Large-Scale Systems������������������������������������������������������������ 59-1
Anne Benoit, Loris Marchal, Yves Robert, Bora Uçar, and Frédéric Vivien
60 Distributed File Systems������������������������������������������������������������������������������ 60-1
Thomas W. Doeppner
61 Mobile Operating Systems���������������������������������������������������������������������������� 61-1
Ralph Morelli and Trishan de Lanerolle
62 Service-Oriented Operating Systems���������������������������������������������������������� 62-1
Stefan Wesner, Lutz Schubert, and Daniel Rubio Bonilla

Part VIII Programming Languages


63 Imperative Language Paradigm������������������������������������������������������������������� 63-1
Michael J. Jipping and Kim Bruce
64 Object-Oriented Language Paradigm���������������������������������������������������������� 64-1
Raimund K. Ege
65 Logic Programming and Constraint Logic Programming������������������������� 65-1
Jacques Cohen
66 Multiparadigm Languages��������������������������������������������������������������������������� 66-1
Michael Hanus
67 Scripting Languages�������������������������������������������������������������������������������������� 67-1
Robert E. Noonan
68 Compilers and Interpreters�������������������������������������������������������������������������� 68-1
Kenneth C. Louden and Ronald Mak
69 Programming Language Semantics������������������������������������������������������������� 69-1
David A. Schmidt
70 Type Systems������������������������������������������������������������������������������������������������ 70-1
Stephanie Weirich
71 Formal Methods�������������������������������������������������������������������������������������������� 71-1
Jonathan P. Bowen and Michael G. Hinchey

Part IX Discipline of Software Engineering


72 Discipline of Software Engineering: An Overview������������������������������������� 72-1
Jorge L. Díaz-Herrera and Peter A. Freeman
73 Professionalism and Certification��������������������������������������������������������������� 73-1
Stephen B. Seidman
74 Software Engineering Code of Ethics and Professional Practice��������������� 74-1
Don Gotterbarn
x Contents

75 Software Business and Economics��������������������������������������������������������������� 75-1


Christof Ebert
76 Open Source and Governance: COTS��������������������������������������������������������� 76-1
Brian M. Gaff, Gregory J. Ploussios, and Brian R. Landry

Part X Software Quality and Measurement


77 Evidence-Informed Software Engineering and the Systematic Literature
Review������������������������������������������������������������������������������������������������������������ 77-1
David Budgen and Pearl Brereton
78 Empirical Software Engineering������������������������������������������������������������������ 78-1
David Budgen and Barbara Kitchenham
79 Software Quality and Model-Based Process Improvement������������������������ 79-1
Bariş Özkan, Özlem Albayrak, and Onur DemirÖrs
80 Software Metrics and Measurements���������������������������������������������������������� 80-1
David Zubrow

Part XI Software Development Management: Processes


and Paradigms
81 Software Development: Management and Business Concepts�������������������� 81-1
Michael A. Cusumano
82 Project Personnel and Organization������������������������������������������������������������ 82-1
Paul McMahon and Tom McBride
83 Project and Process Control������������������������������������������������������������������������ 83-1
James McDonald
84 Agile�������������������������������������������������������������������������������������������������������������� 84-1
John Favaro
85 Service-Oriented Development�������������������������������������������������������������������� 85-1
Andy Wang and Guangzhi Zheng
86 Software Product Lines�������������������������������������������������������������������������������� 86-1
Jorge L. Díaz-Herrera and Melvin Pérez-Cedano

Part XII Software Modeling, Analysis, and Design


87 Requirements Elicitation������������������������������������������������������������������������������ 87-1
Daniel M. Berry
88 Specification������������������������������������������������������������������������������������������������� 88-1
Andrew McGettrick
89 Software Model Checking���������������������������������������������������������������������������� 89-1
Alastair Donaldson
Contents xi

90 Software Design Strategies�������������������������������������������������������������������������� 90-1


Len Bass
91 Software Architecture����������������������������������������������������������������������������������� 91-1
Bedir Tekinerdogan
92 Human–Computer Interfaces for Speech Applications������������������������������ 92-1
Shelby S. Darnell, Naja Mack, France Jackson, Hanan Alnizami, Melva James, Josh
Ekandem, Ignacio Alvarez, Marvin Andujar, Dekita Moon, and Juan E. Gilbert
93 Software Assurance�������������������������������������������������������������������������������������� 93-1
Nancy R. Mead, Dan Shoemaker, and Carol Woody
Preface to the Computing
Handbook Set

The purpose of the Computing Handbook Set is to provide a single, comprehensive reference for spe-
cialists in computer science, information systems, information technology, software engineering, and
other fields who wish to broaden or deepen their understanding in a particular subfield of the comput-
ing discipline. Our goal is to provide up-to-date information on a wide range of topics in a form that is
accessible to students, faculty, and professionals.
The discipline of computing has developed rapidly since CRC Press published the second edition of
the Computer Science Handbook in 2004 (Tucker, 2004). Indeed, it has developed so much that this third
edition requires repartitioning and expanding the topic coverage into a two-volume set.
The need for two volumes recognizes not only the dramatic growth of computing as a discipline but
also the relatively new delineation of computing as a family of five separate disciplines, as described by
their professional societies—The Association for Computing Machinery (ACM), The IEEE Computer
Society (IEEE-CS), and The Association for Information Systems (AIS) (Shackelford et al., 2005).
These separate disciplines are known today as computer engineering, computer science, information
systems, information technology, and software engineering. These names more or less fully encom-
pass the variety of undergraduate and graduate degree programs that have evolved around the world,
with the exception of countries where the term informatics is used for a subset of these disciplines. The
document “Computing curricula 2005: The overview report” describes computing this way (Shackelford
et al., 2005, p. 9):

In a general way, we can define computing to mean any goal-oriented activity requiring, benefit-
ing from, or creating computers. Thus, computing includes designing and building hardware and
software systems for a wide range of purposes; processing, structuring, and managing various
kinds of information; doing scientific studies using computers; making computer systems behave
intelligently; creating and using communications and entertainment media; finding and gathering
information relevant to any particular purpose, and so on.

To add much flesh to the bones of this very broad definition, this handbook set describes in some
depth what goes on in research laboratories, educational institutions, and public and private organiza-
tions to advance the effective development and utilization of computers and computing in today’s world.
The two volumes in this set cover four of the five disciplines in the following way:*
1. Volume I: Computer Science and Software Engineering
2. Volume II: Information Systems and Information Technology

* The fifth discipline, computer engineering, is the subject of a separate handbook published by CRC Press in 2008.

xiii
xiv Preface to the Computing Handbook Set

This set is not designed to be an easy read, as would be gained by browsing a collection of encyclope-
dia entries on computing and its various subtopics. On the contrary, it provides deep insights into the
subject matter through research-level survey articles. Readers who will benefit most from these articles
may be undergraduate or graduate students in computing or a related discipline, researchers in one area
of computing aiming to expand their knowledge of another area, or other professionals interested in
understanding the principles and practices that drive computing education, research, and development
in the twenty-first century.
This set is designed as a professional reference that serves the interests of readers who wish to explore
the subject matter by moving directly to a particular part and chapter of the appropriate volume. The
chapters are organized with minimal interdependence, so that they can be read in any order. To facili-
tate rapid inquiry, each volume also contains a table of contents and a subject index, thus providing
access to specific topics at various levels of detail.
The Preface to Volume I provides a more detailed overview of the organization and content of this
volume. A similar overview of the coverage of information systems and information technology appears
in the Preface to Volume II.
Preface to Volume I:
Computer Science and
Software Engineering

This volume is organized to mirror the modern taxonomy of computer science and software engineering
as described by the ACM and IEEE-CS (Joint Task Force, 2012):
Algorithms and Complexity
Architecture and Organization
Computational Science
Discrete Structures
Graphics and Visual Computing
*Human–Computer Interaction
*Security and Information Assurance
*Information Management
Intelligent Systems
Networking and Communication
Operating Systems
Platform-Based Development
Parallel and Distributed Computing
Programming Languages
Software Development Fundamentals
Software Engineering
Systems Fundamentals
Social and Professional Issues
To avoid redundancy, the three starred (*) topics in this list (Human–Computer Interaction, Security
and Information Assurance, and Information Management) are covered in Volume II, while the remain-
ing topics are covered in this volume.
The first eight parts of this volume cover the discipline of computer science (edited by Teofilo Gonzalez),
while the last four parts cover software engineering (edited by Jorge Díaz-Herrrera). Allen Tucker is the
editor in chief of the two volumes.

Computer Science
Implicit in the aforementioned taxonomy (and, indeed, in all current thinking about the nature of com-
puter science) is the idea of a dynamic discipline with an increasingly broad reach. For example, the
computational science area noted earlier emphasizes the necessity of interaction among computer scien-
tists and natural scientists in the many research and educational areas where their work now overlaps.

xv
xvi Preface to Volume I: Computer Science and Software Engineering

A more elaborate description of this idea is expressed in the following definition of computer science,
taken from the 2005 Joint Task Force Report (Shackelford, 2005, p. 13):

Computer science spans a wide range, from its theoretical and algorithmic foundations to cutting-
edge developments in robotics, computer vision, intelligent systems, bioinformatics, and other
exciting areas. We can think of the work of computer scientists as falling into three categories.
1. They design and implement software. Computer scientists take on challenging program-
ming jobs. They also supervise other programmers, keeping them aware of new approaches.
2. They devise new ways to use computers. Progress in the CS areas of networking, database,
and human-computer-interface enabled the development of the World Wide Web. Now CS
researchers are working with scientists from other fields to make robots become practical
and intelligent aides, to use databases to create new knowledge, and to use computers to help
decipher the secrets of our DNA.
3. They develop effective ways to solve computing problems. For example, computer scien-
tists develop the best possible ways to store information in databases, send data over net-
works, and display complex images. Their theoretical background allows them to determine
the best performance possible, and their study of algorithms helps them to develop new
approaches that provide better performance.
The computer science chapters are organized into eight parts: (I) Overview of Computer Science;
(II) Algorithms and Complexity; (III) Architecture and Organization; (IV) Computational Science and
Graphics; (V) Intelligent Systems; (VI) Networking and Communication; (VII) Operating Systems; and
(VIII) Programming Languages. A brief summary of what you can expect to find in each part is pro-
vided in the following.

Overview of Computer Science


Part I consists of two very important chapters. In Chapter 1, Peter Denning discusses the 50-year evolu-
tion of computer science as a discipline distinct from the fields from which it emerged: mathematics,
science, and engineering. In Chapter 2, Valerie Barr introduces the idea of “computational thinking,” a
relatively new term that is helping to shape modern thinking about the expanding presence of computer
science, especially in the K-12 and undergraduate college curricula.

Algorithms and Complexity


This part discusses the algorithmic and computational complexity issues that underlie all of computer
science. Chapter 3 covers important ways of organizing data inside computers to facilitate their retrieval.
It discusses the time and space trade-offs for implementing the most important algorithms used in almost
every application. The different design paradigms behind these algorithms are discussed in Chapter 4.
The chapter covers greedy methods, divide-and-conquer, and dynamic programming, as well as other
techniques that have been applied successfully in the design of efficient algorithms. Graphs and networks
have been used to model a wide range of computer science problems as well as problems in different disci-
plines. Chapter 5 discusses graph and network techniques that have been devised to efficiently solve these
problems. In some applications, computational problems can be simplified by formulating them as prob-
lems in two-dimensional space. Computational geometry problems include those that have intrinsic geo-
metric properties. Chapter 6 discusses the techniques that have been applied successfully in this domain.
Chapter 7 discusses computational complexity classes. This is a grouping of problems according to the
time and space required to solve them. The major classes are called P and NP, and they help characterize
most of the computational challenges that arise in practice. A fundamental problem in computer science
is to prove or disprove whether P = NP. In fact, it is so important that a so-called “Millennium Prize”
Preface to Volume I: Computer Science and Software Engineering xvii

consisting of $1,000,000 has been offered by the Clay Institute to anyone who solves this problem. At
a more abstract level, Chapter 8 reviews formal methods and computability. This chapter explores the
limits of what is computable within the most basic computing models that are equivalent to current
computer architectures. One of the most complex areas of research is cryptography. Chapter 9 provides
a comprehensive overview of this very important area. Since millions of private transactions take place
on the Internet every second, we need ways to keep them secure and guarantee their integrity. Solutions
in this area require sophisticated mathematical analysis techniques. Chapter 10 addresses the area of
algebraic algorithms. The basic applications in this area are in science and engineering.
As the input size of most computationally complex problems continues to grow (sometimes referred to as
the phenomenon of big data), the study of randomized algorithms has grown considerably in recent years.
Chapter 11 discusses techniques to design such algorithms by presenting algorithms to solve some specific
problems. Another way of dealing with computational complexity is to aim for approximations rather than
optimal solutions. Chapter 12 discusses approximation algorithms and metaheuristics. The different meth-
odologies used in these two areas are surveyed and applied to problems from different disciplines. Algorithms
that take advantage of the combinatorial structure of the feasible solution space are discussed in Chapter 13.
Another important algorithmic challenge is how to visualize data and their structure. Chapter 14 covers the
area of graph drawing, which tries to design algorithms that display information in a clear way according
to given objective functions. In this era of big data, we also need to discover ways of storing, retrieving, and
transmitting it efficiently. Chapter 15 covers strategies for data compression and finding patterns in data
quickly. Chapter 16 studies computing in a landscape where the computations are distributed among many
computers. In this scenario, we need to address the issue of fault-tolerant computing; as the number of inde-
pendent devices grows, the likely failure of at least one of the components increases substantially.

Architecture and Organization


Part III takes us closer to computing machines themselves by examining their architecture and organi-
zation. Starting at the most basic organizational level, Chapter 17 covers digital logic, how it is imple-
mented, and how logical components are designed to carry out basic computations. Chapter 18 covers
the organization of memory and its implementation, including the different levels of memory, access
speeds, and implementation costs. Chapter 19 extends this discussion to the treatment of secondary
storage. A main issue here is how to store files in disks, solid state devices, and flash memories to ensure
reliability. Chapter 20 covers computer arithmetic, including the efficient implementation of the basic
arithmetic and logical operations that are fundamental to all computing activities. Modern input and
output devices are discussed in Chapter 21. As the way we interact with computers has changed over the
years, input and output design remains at the forefront of research and development.
Chapter 22 discusses performance enhancements for instruction processing, such as the use of over-
lap and low-level concurrency. Focusing on the theme of design for efficiency, Chapter 23 surveys the
different ways of organizing parallel computers. It begins with the standard types introduced several
decades ago and concludes with the highly successful GP-GPUs as well as cloud computing. To cir-
cumvent the memory access and sequential performance walls, modern architectures include multiple
processors on a single chip. Chapter 24 discusses the hardware and software challenges for the design
and use of multicore architectures. Chapter 25 explains how DNA can be used to compute some logical
functions and perform biological tests. Currently, performing these tests takes some time because it
requires several computational facilities and involves human intervention.

Computational Science and Graphics


Some aspects of computational science have been part of computing since its beginning. Computational
electromagnetics (Chapter 26) basically studies the computational solution of Maxwell equations. Analytical
solutions to Maxwell equations are usually unavailable, and the few closed-form results that exist have very
xviii Preface to Volume I: Computer Science and Software Engineering

restrictive solutions. The use of computer-based methods for the prediction of fluid flows has seen tremen-
dous growth in the past half century. Fluid dynamics (Chapter 27) has been one of the earliest, and most
active, fields for the application of numerical techniques. Computational astrophysics (Chapter 28) cov-
ers astrophysics, a computationally intensive discipline. Physics and astronomy make heavy use of online
access and data retrieval. Databases, data analysis, and theoretical modeling go hand in hand in this area.
The gravitational n-body problem and its modeling form the basis for cosmology. Chapter 29 discusses the
rich set of computational applications in chemistry. Computational biology/bioinformatics is an area that
has grown tremendously over the last decade. Chapter 30 discusses the interplay between the genetic analy-
sis provided by computational algorithms and the underlying biological processes. Chapter 31 on terrain
modeling examines the computational problems and new insights arising from the analysis of GIS data.
Computer graphics provides the underlying tools for scientific visualization and animation of a wide
variety of real and imaginary phenomena. Chapter 32 discusses the basic geometric primitives manipu-
lated by typical graphics systems. These primitives allow for the efficient representation and manipula-
tion of visual objects in a computer. Chapter 33 covers computer animation, which has become widely
used in the production of movies and videos.

Intelligent Systems
Mathematical logic and declarative programming provide theoretical foundations for artificial intel-
ligence applications, which are called intelligent systems. Chapter 34 explores the use of logic to allow a
system to work in spite of contradictions, dilemmas, and conflicts. Chapter 35 discusses qualitative rea-
soning, which supports reasoning with very little information. This is the first approach that one uses to
understand a problem before developing a more formal or quantitative strategy. Machine learning, dis-
cussed in Chapter 36, is concerned with identifying and exploiting patterns in data to simulate human
learning. Applications of machine learning to real-world problems are widely used on the Internet,
for example, in marketing. Chapter 37 introduces explanation-based learning, which adds inferential
domain theory to expand the reach of statistical machine learning. This theory adds expressiveness to
statistical methods such as Bayesian or Markov models.
Chapter 38 describes searching, which is a basic operation in most computing areas and is par-
ticularly important in intelligent systems where the search domain is often complex. This chapter
explores both blind exhaustive search methods using informed heuristics and optimal heuristics.
Chapter 39 covers planning (the process of creating an organized set of actions) and scheduling
(the process of assigning a set of actions to resources over time). These are basic operations arising
in all sorts of environments and have been studied over the years in several disciplines. Chapter 40
explores natural language processing, or developing systems to understand human languages. In
2011, IBM’s Watson program c­ onvincingly won the popular Jeopardy game over the most highly
skilled human competitors. This was a major accomplishment for natural language processing.
Spoken language understanding, covered in Chapter 41, is an emerging field between the areas of
speech processing and natural language ­processing. This area leverages technologies from machine
learning to create systems that would facilitate communication with users. Chapter 42 covers neural
networks, which have been used to solve a wide range of problems in modeling intelligent behavior.
Chapter 43 deals with cognitive modeling and surveys the methods and models used to understand
human cognition. The semantic basis and properties of graphic models (Bayesian Networks) are
explored in Chapter 44. Applications to reasoning and planning are discussed in this chapter.

Networking and Communication


In the last 20 years, the use of computer networks for communication has become an integral part of our
daily life. An incredible volume of information is transferred constantly worldwide through computer net-
works, and these must operate efficiently and reliably so that modern business and commerce can function
Preface to Volume I: Computer Science and Software Engineering xix

effectively. Chapter 45 examines the communications software needed to interconnect computers, serv-
ers, and all sort of devices across networks. The unique aspects of wireless networks are discussed in
Chapter 61 in Part VII. Chapter 46 discusses the routing algorithms that manage information flow across
networks, including the trade-offs that exist among different alternatives. Chapter 47 discusses access
control, which is fundamental for protecting information against improper disclosure or modification.
Compression of images and videos needed for the efficient storage and transmission of these types
of data is covered in Chapter 48. Chapter 49 introduces underwater sensor networks, whose challenges
and techniques are very different from those in other types of networks. Chapter 50 surveys ideas for
transforming the World Wide Web to facilitate interoperability and integration of multiauthored, mul-
tithematic, and multiperspective information services seamlessly. Chapter 51 deals with search engines,
which have become indispensable in almost all aspects of our daily life. It discusses the fundamental
issues involved in designing and constructing search engines that interact with enormous amounts of
information and digest it for users.

Operating Systems
An operating system is the fundamental software that controls all aspects of a computer, its applications,
and its user interface. Chapter 52 discusses processes, the basic software activities that an operating
system manages, and the mechanisms needed for communication and synchronization. Chapter 53
covers thread management, where threads are basic sequences of code that comprise a program running
in a system. Breaking programs and systems into threads is particularly useful in multicore machines,
the modern organization of computers. Virtual memory, discussed in Chapter 54, explains the way in
which computer memory is organized for efficient access in computers. This chapter also discusses how
these techniques apply to other levels of storage and systems. The organization of file systems and sec-
ondary storage is discussed in Chapter 55. The main concern is the use of secondary storage space for
its use as long storage media.
Chapter 56 covers performance modeling of computer systems. Different computer architectures
have different performance limits. The chapter discusses different ways to analyze computer system
performance. Chapter 57 deals with a similar topic but for interconnected distributed computer systems
such as clusters, grids, and clouds. An important issue here is maintaining quality of service during
contention management. The architecture and special applications of real-time systems are discussed
in Chapter 58. In these systems, response must occur within specific deadlines; it is a challenge for the
operating system to schedule processes so that these deadlines are met. The design of distributed operat-
ing systems faces two main challenges: scheduling, covered in Chapter 59, and file systems, covered in
Chapter 60. Mobile devices pose new challenges for operating system design, and these are addressed
in Chapter 61. The proliferation of smart phones and tablets has brought this area to the forefront of
research and development. Chapter 62 provides an introduction to service-oriented operating systems
and concludes this part.

Programming Languages
Programming language research has a rich history, and it has remained vibrant with the development
of modern architectures, networks, and applications. Chapter 63 covers imperative programming lan-
guages, the oldest and probably the most prolific style of programming. These types of languages are in
widespread use and are familiar to software developers in all areas of computing. The object-oriented
programming paradigm discussed in Chapter 64 has become popular as it facilitates modeling real-
world software systems using object decomposition. Another form of programming, logic program-
ming discussed in Chapter 65, has major applications in artificial intelligence and natural language
processing research. Recent developments have been especially active in the areas of multiparadigm
programming languages and scripting languages described in Chapter 66 and Chapter 67, respectively.
xx Preface to Volume I: Computer Science and Software Engineering

Chapter 68 deals with compilers and interpreters, which provide the interface between programs
written in higher-level programming languages and an equivalent encoding that a computer can under-
stand and carry out. Many aspects of this process have been automated, and the techniques and limita-
tions of these processes are also discussed. Every programming language has syntax and semantics.
Syntax refers to the valid strings of characters that define valid programs in the language, and semantics
refers to the meaning of such strings. Chapter 69 covers formal semantics for programming languages.
Chapter 70 describes type systems, which are used in modern programming languages to guarantee
that programs are free of type-related errors. This chapter discusses the formal underpinnings of type
systems as well as their implementations. Chapter 71 covers formal methods, a set of notations and tools
that provide a mathematical basis for proving the correctness of a program with regard to its formal
specification.

Software Engineering
As an academic field of study, software engineering was introduced in the early 1970s as a specialization of
computer science and engineering, first as master-level programs. In the 1990s, the field proliferated in North
America, Europe, and Australia, first in the form of BS programs and, more recently, programs at the PhD
level; that is, software engineering programs separate from computer science programs (Lethbridge et al.,
2006). What is the difference and why do we care?
Software is of critical importance in today’s world and of increasingly serious public significance in
our daily lives for our safety and security. Although the voicing of concerns about the critical conse-
quences of not considering software development as a more rigorous profession dates back to the late
1960s (Naur, 1969), today software engineering is still not a fully formed, mature professional discipline.
This seems more of an elusive goal than a concrete reality or even a future possibility. Some wonder if
trying to retrofit software engineering with the traditional engineering paradigm has hindered its accep-
tance as a professional discipline. Particularly lacking is a widespread recognition of software develop-
ers as professionals in the full sense of the word.*
Over the past decades, we have identified scientific and engineering body of knowledge needed to
solve technical software problems that meet user requirements (functional and otherwise) and deliver
software within budget, on time, as well as within its economic, legal, and social considerations. The
study of engineering requires a strong background in mathematics and the physical sciences. Although
this is not different for software engineers, the kind of mathematics and the specific science may be dif-
ferent from more traditional engineering disciplines. However, a legitimate research question remains
on whether there could be a scientific basis for understanding the complexity of software such that it can
be engineered to have predictable quality and behavior.
Ian Sommerville (1999) introduced the idea that software engineering is perhaps something else: “In
essence, the type of systems which we are interested in are socio-technical software-intensive systems.…
Systems, therefore, always include computer hardware, software which may be specially designed or
bought-in as off-the-shelf packages, policies and procedures, and people who may be end-users and pro-
ducers/consumers of information used by the system.” Furthermore, Sommerville and his colleagues
claim that “there is no technical solution to software complexity” (Sommerville, 2012).
The fact that computing has become a distinct branch of knowledge, that is, a discipline in its own
right different from science and engineering—an idea first formally introduced by Denning (1998) and
further developed by Denning and Freeman (Denning, 2009)—fits this notion as has been demonstrated
by the creation of a unifying and enclosing academic entity that embraces the science, engineering, and
technology of computing: the computing college, “standing alone, headed by its own dean, with the

* It is a fact of life that many of the software industry professionals are graduates from computer science and related fields.
This is of no surprise since in most advertisements for such positions, the educational requirements often listed are
degrees in computer science. However, once hired, employers give them the title of software engineer.
Preface to Volume I: Computer Science and Software Engineering xxi

same stature as traditional colleges” [op. cit.]. In this way, computer science is a different kind of science
and software engineering a different kind of engineering.
The chapters in the last four parts consolidate our current understanding of the discipline of software engi-
neering and its effect on the practice of software development and the education of software professionals.
There are four main parts. (1) Discipline of Software Engineering; (2) Software Quality and Measurement;
(3) Software Development Management: Processes and Paradigms; and (4) Software Modeling, Analysis,
and Design (notice that programming topics were amply covered in Part VIII, programming languages).

Discipline of Software Engineering


This part includes five chapters. It starts with Chapter 72, which provides an overview of software engi-
neering. The chapter delineates the historical development of the discipline and provides an analysis of
accepted definitions and an outline of the elements of the field. It looks at generally accepted definitions
of engineering and shows the relation of certain elements to software development. It also points out
important differences and demonstrates through a detailed analysis how prominent features that cut
across all engineering disciplines can reasonably be mapped to software development. In this regard,
the two most fundamental aspects are problem solving and engineering design. Mastery of problem
solving involves a combination of proper judgment, experience, common sense, and know-how that
must be used to reduce a real-world problem to such a form that science can be applied to find its solu-
tion. Engineering design, on the other hand, is the process of devising a system, component, or process
to meet desired needs by finding technical solutions to specific practical problems, while taking into
account economic, legal, and ecological considerations. Among the fundamental elements of this pro-
cess are the establishment of objectives and criteria, synthesis, analysis, construction, testing, and evalu-
ation, all of which have a counterpart in software engineering.
Chapters 73 and 74 deal with professionalism and certification issues and the code of ethics and profes-
sional conduct, respectively. Chapter 73 addresses software engineering as a profession from the point of
view of the body of knowledge, accreditation of academic programs, and issues on licensure and certifi-
cation of software engineering professionals. It provides a good account of the political realities of mak-
ing software development a professional discipline and concludes that “it seems clear that the future of
software engineering professionalism will be driven by industry and government,” although the uptake
of credentials has been driven by practitioners’ interest (e.g., IEEE-CS CSDP).
Concomitant with the development of software engineering as a professional discipline is the intro-
duction of a code of ethics, and in late 1999 the Association for Computing Machinery and the IEEE
Computer Society approved the Software Engineering Code of Ethics and Professional Practice. In
Chapter 74, Gotterbarn, a principal architect of the code, provides a rich historical account of its devel-
opment and a thorough description of its purpose and principles, together with simple cases as examples
and practical guidance for public accountability and educational purposes.
Chapters 75 and 76 address software IT business and economics and open source and governance.
Chapter 75 provides an overview of the business of software from an IT and economics point of view,
with a focus on the success rate of projects in terms of schedule predictability and quality, while empha-
sizing available solutions and best practices to practically implement this framework. It concludes with
a look at business trends, naturally influenced and determined by external factors such as demand for
value, fashion, individualism, ever-changing expectations, demand for ubiquitous services, global com-
petition, economic and ecologic behaviors, and the need for security and stability, which in turn influ-
ence trends for software and IT business.
Chapter 76 on open source and governance is an authoritative manifesto in the subject, providing a
comprehensive set of underlying principles regarding copyright law and license terms, including the
peculiarities of COTS (commercial off-the-shelf). It also contains numerous examples of best practices
covering a myriad of situations in which companies “desiring to supplement and expand the capabilities
of their existing software” can find themselves.
xxii Preface to Volume I: Computer Science and Software Engineering

Software Quality and Measurement


This part highlights an important aspect that makes software engineering a distinct computing dis-
cipline and that lends it much scientific credibility. The first two chapters focus on evidence-informed
software engineering and empirical software engineering. Chapter 77 introduces the evidence-based par-
adigm, which originally emerged in medicine, together with a systematic literature review of its appli-
cation in software engineering. The idea, first advocated by Kitchenham et al. in 2004, suggests that
with some adaptation to fit the nature of software engineering studies, this could be a valuable way of
consolidating our empirical knowledge about what works, when, and where. Chapter 78 provides an
overview of how the ideas and practices associated with empirical software engineering have evolved.
It represents an invaluable aid for identifying suitable forms of study for a particular need and to pro-
vide enough background for software engineers to appreciate the strengths and limitations of empirical
knowledge and practice. This is particularly relevant if software engineering is to become a professional
discipline; in this way, its practices, methods, and tools would need to be informed by evidence from
well-conducted empirical studies.
Chapter 79 looks at quality in general and provides a comprehensive survey and analysis of qual-
ity under the umbrella of software process improvement. It differentiates software quality attributes
from the point of view of the end user to IT operations, through marketing and projects and technical
concerns. It also describes five perspective approaches to quality, that is, transcendental, product, user,
manufacturing, and value based, with corresponding mappings to ISO quality standards. The chapter
then juxtaposes process and quality and cost and quality. It provides an overview of best practices cover-
ing the various approaches to software process maturity such as CMM and SPICE together with practi-
cal implementation implications. It also identifies issues associated with small organizations and Agile
development, as well as measurement and the use of statistical process control.
Chapter 80 focuses on software metrics and measurements and hence follows naturally here. This
is an important component of software engineering as a professional discipline. The chapter dem-
onstrates the value of software measurement and the role of international standards. These stan-
dards embody principles and best practices as defined and codified by experts in the field. Several
approaches to implement measurement are discussed, including CMMI measurement and analysis
(M&A), measurement and analysis infrastructure diagnostic (MAID), and goal–question–metric
(GQM) among others. The chapter also covers predictive models and indicators, developing bench-
marks and heuristics and improving data quality, concluding that “software measurement is required
to quantify quality and performance and to provide an empirical and objective foundation for deci-
sion making—a foundation that is a necessary element if software engineering is truly to be a disci-
plined field of engineering.”

Software Development Management: Processes and Paradigms


The chapters in this part address the development of software from a higher-level managerial, rather
than code development point of view. The first three chapters deal with management and organiza-
tional issues. Chapter 81 argues that there is no one best way to develop software and manage projects
for all kinds of applications but that there are some basic principles that can be applied to a variety of
projects within their contexts. It takes us through a series of high-level process concepts, innovation
and design, and architecture strategies and how they are used in different situations. It concludes with
a brief analysis of the results of a survey on global differences in practices and performance metrics in
different regions of the world.
Chapter 82 covers issues related to project personnel and organization such as how to put together a
team and how to decide on the types of personnel that you will need in your team based on the differ-
ent types of roles and responsibilities. The chapter also explains the different ways you can organize
Preface to Volume I: Computer Science and Software Engineering xxiii

your personnel along with the advantages and disadvantages of each approach, as well as underlying
principles and best practices.
Chapter 83 discusses project and process control. It makes a distinction between the project manager’s
control activities in executing a project, that is, project control, and the control of the underlying soft-
ware development processes, or process control. Controlling a project and controlling the underlying
processes are very different activities and, consequently, they require very different techniques to make
them effective. The chapter describes the underlying mathematical and engineering foundations of two
well-known control methods that can be applied to controlling software development projects and to
their underlying software development processes. The first is closely related to traditional engineering
methods for controlling manufacturing and communications systems using feedback. The second is
known as statistical process control (SPC). The chapter concludes with a brief discussion of the extensive
literature describing the application of SPC methods to software projects and the successes and failures
that they have reported.
The last three chapters in this part address more recent development frameworks. Chapter 84 pro-
vides a thorough introduction to Agile methods, an umbrella term popularized with the publication of
the Agile manifesto, reflecting an intention to differentiate Agile approaches from a trend in software
development methodologies that had gained dominance in previous decades. It describes the set of 12
principles underlying the Agile approach as provided by the Agile manifesto. Specific implementations
of the approach are described as best practices, including extreme programming, scrum, etc., together
with an analysis of their specific incorporation, or not, of the 12 principles. The chapter concludes with a
discussion of plan-driven approaches’ compatibility, such as CMMIs, with Agile methods and thorough
analyses of important research directions.
Chapter 85 presents a process for developing software based on service-oriented architectures. The
fundamental building blocks of the approach are services, commonly viewed as self-contained software
application modules exposed through interfaces over a distributed environment. The chapter intro-
duces related elements such as component-based development, distributed components, and web ser-
vices. The underlying principles of the approach are described together with the service infrastructure
needed. In terms of best practices, the chapter outlines reference models and reference architectures and
standards as well as the enterprise service bus idea and compares the specific implementations of the
web services SOAP and REST.
Chapter 86 on software product lines (SPL) provides an introduction to the topic and a thorough anal-
ysis of its research challenges. SPL is one of the most active research areas of software engineering, and
despite remarkable contributions, which are briefly highlighted, important technical problems remain.
The chapter reports quantitative information, based on a secondary study and literature review, on these
remaining problems, which slow down widespread adoption of SPL. The results provided are supported
by a survey among longtime and active SPL researchers and practitioners. The top two reported research
problems were variability management and evolution.

Software Modeling, Analysis, and Design


The last part of this section focuses on specific software development activities starting with require-
ments elicitation and specification, followed by model checking, design strategies, and software archi-
tecture and finally dealing with more overarching topics such human–computer interfaces and software
assurance.
Chapter 87 covers requirements elicitation, a subprocess of requirements engineering concerned with
gathering information about a computer-based system to be built. This is generally the first step in the
software development life cycle regardless of the process model, whether it be waterfall, spiral, or even
Agile. The chapter considers the different scenarios, reviews all available techniques with their pros and
cons, and provides sound advice on what could go wrong during requirements elicitation.
xxiv Preface to Volume I: Computer Science and Software Engineering

Chapter 88 focuses on specifications for software systems and the software requirements specification
document (SRS) document capturing them. Software requirement specifications are discussed at dif-
ferent stages from a very informal description to inform users, to descriptions in unambiguous terms,
written in a rather formal (i.e., precise and unambiguous) manner. The chapter provides an overview of
best practices for producing an SRS possessing all the desirable quality attributes and characteristics. It
also provides a survey of the various specification languages and lists outstanding research issues such
as completeness, nonfunctional requirements, cost, program construction and proof, and correctness-
preserving program transformations.
Chapter 89 provides an overview of techniques and tools for analyzing the correctness of software
systems using model checking. Two classes of techniques are covered, namely, counterexample-guided
abstraction refinement (CEGAR) using predicate abstraction, and bounded model checking; other key
model checking techniques that are geared toward software verification analysis are also covered. The
chapter concludes with a brief survey of tools.
The next two chapters are about software design. Chapter 90 on design strategies leads us directly
from requirements as “one assumption underlying any design is that the design will satisfy some set of
requirements.” A set of underlying principles is discussed, including the notion of views, architectural
patterns and tactics, decomposition and refinements, and code generation and testing. Design best prac-
tices are presented together with an analysis of important research concerns such as automatic/semiau-
tomatic design, the accuracy of models, and the use and appropriate place for tools.
Chapter 91 on software architecture focuses exclusively on the main product of design: an archi-
tectural design of the software system to solve a specified problem. Various architectural frameworks
are contrasted from their specific viewpoints, as well as a survey of design methods. A metaprocess is
described, starting with concern analysis and domain analysis and concluding with architecture design,
evaluation, and realization. Research topics in software architectures presented include modeling qual-
ity and issues related to model-driven design.
Chapter 92 on human–computer interfaces in software engineering uses speech applications (both
input and synthesis) from requirements to design and implementation to illustrate principles and best
practices and describe difficult research issues that lie ahead on the implication of human–computer
interaction on software development. The latter discusses inherent current limits in speech applications
design.
Chapter 93 deals with software assurance. It discusses the impact of the risks associated with software
vulnerabilities and introduces basic definitions of software assurance. It also presents modern principles
of software assurance and identifies a number of relevant process models, frameworks, and best prac-
tices. The chapter concludes with a research framework to support and identify gaps for future research
and includes a description of the knowledge areas for a Master of Software Assurance as mapped to
maturity levels for building assured systems.

MATLAB® is a registered trademark of The MathWorks, Inc. For product information, please contact:

The MathWorks, Inc.


3 Apple Hill Drive
Natick, MA 01760-2098 USA
Tel: 508-647-7000
Fax: 508-647-7001
E-mail: info@mathworks.com
Web: www.mathworks.com
Preface to Volume I: Computer Science and Software Engineering xxv

References
Denning, P., Computing the profession: An invitation for computer scientists to cross the chasm. Educom
Review, 33(6), 1998:26–30;46–59.
Denning, P. and P. Freeman. Computing’s paradigm. Communications of the ACM, December 2009.
Joint Task Force on Computing Curricula, Computer Science Curricula 2013, Association for Computing
Machinery (ACM) and the IEEE-Computer Society (IEEE-CS), December 2013. See http://www.
acm.org/education/curricula-recommendations.
Lethbridge, T.C., R.J. LeBlanc Jr., A.E. Kelley Sobel, T.B. Hilburn, and J.L. Díaz-Herrera. SE2004:
Curriculum recommendations for undergraduate software engineering programs. IEEE Software,
Nov/Dec 2006, 19–25.
Lunt, B.M., J.J. Ekstrom, S. Gorka, G. Hislop, R. Kamali, E. Lawson, R. LeBlanc, J. Miller, and H. Reichgelt.
IT 2008: Curriculum Guidelines for Undergraduate Degree Programs in Information Technology.
ACM and IEEE Computer Society, 2008.
Naur, P. and B. Randell (eds.). Software Engineering, Report on a Conference Sponsored by the NATO
Science Committee, October 1968.
Shackelford, R., J. Cross, G. Davies, J. Impagliazzo, R. Kamali, R. LeBlanc, B. Lunt, A. McGettrick, R.
Sloan, and H. Topi. Computing Curricula 2005: The Overview Report, A cooperative project of the
ACM, AIS, and IEEE Computer Society, 30 September, 2005. See http://www.acm.org/education/
curricula-recommendations.
Sommerville, I. Systems engineering for software engineers. Annals of Software Engineering, 6(1–4), April
1999: 111–129.
Sommerville, I., D. Cliff, R. Calinescu, J. Keen, T. Kelly, M. Kwiatkowska, J. Mcdermid, and R. Paige.
Large-scale complex IT systems. Communications of the ACM, 55(7), July 2012: 71–77.
Topi, H., J. Valacich, R. Wright, K. Kaiser, J. Nunamaker, J. Sipior, and G. Jan de Vreede. IS 2010: Curriculum
guidelines for undergraduate degree programs in information systems. Communications of the
Association for Information Systems, 26(18). http://aisel.aisnet.org/cais/vol26/iss1/18.
Tucker, A. (ed.). Computer Science Handbook, 2nd edn., Chapman & Hall/CRC Press, in cooperation with
the Association for Computing Machinery (ACM), Boca Raton, FL, 2004.
Acknowledgments

This volume would not have been possible without the tireless and dedicated work of all the authors and
reviewers. We appreciate the willingness of both established experts and influential younger research-
ers to join this effort and contribute to this work. Even though we have been working for decades in the
computing field, our work on this volume has enriched substantially our knowledge and understanding
of computing.
We would also like to thank the editorial staff at Chapman & Hall/CRC Press, particularly the per-
sistent and gentle leadership of Randi Cohen, computer science acquisitions editor, whose role has
extended beyond any reasonable call of duty. Bob Stern, as the original computer science editor who
helped create this handbook in its original and second editions, also deserves recognition for his con-
tinued support over the years.
Teo acknowledges the support of the University of California, Santa Barbara (UCSB). Without his
sabbatical leave, this project would not have been possible. He also wants to thank his wife, Dorothy,
and children, Jeanmarie, Alexis, Julia, Teofilo, and Paolo, for their love, encouragement, understanding,
patience, and support throughout the project and his tenure at UCSB.
Jorge acknowledges the support of Dr. Özlem Albayrak during the entire project. He is grateful to
his team at Keuka College, particularly Lori Haines and Sandra Wilmott, for their moral support and
encouragement as he took the helm of the College concomitant with the start of this project.
Allen acknowledges Bowdoin College for providing him the time and support needed to develop the
first, second, and third editions of this handbook set over the last 15 years. He also thanks the many
colleagues who have contributed to earlier editions of this handbook, without which the current edition
would not have been possible. Finally, he thanks his wife, Meg, and children, Jenny and Brian, for their
constant love and support over a lifetime of teaching and learning.
We hope that this volume will be actively and frequently used both by academics who want to explore
the current status and new opportunities within specific research areas and by advanced practitioners
who want to understand how they can benefit from the latest thinking within the disciplines of com-
puter science and software engineering. We also warmly welcome your feedback.

Teofilo Gonzalez
University of California, Santa Barbara

Jorge Díaz-Herrera
Keuka College

Allen B. Tucker
Bowdoin College

xxvii
Exploring the Variety of Random
Documents with Different Content
254 THE BATTLES OF TRENTON AND PRINCETON Having
posted his command in and near the meeting house there, he
communicated with the commander-in-chief, and awaited further
orders.^ On the first day of January General Cadwalader was
directed to join General Washington's army at Trenton. He marched
his force along the White Horse road, crossing Doctor's Creek and
the Sand Hills, and, being joined by General Mififlin's division at the
White Horse Tavern, the whole column moved on to Trenton. It was
not until eleven o'clock on the morning of January 2, however, that
the whole of the additional force, about 3600 men, could be
concentrated on the banks of the Assunpink Creek. Some time had
been required to gather in the picket-guards and the scouting parties
which had been sent out toward Allentown, Cranberry and Princeton.
It had rained during the night, and the roads were muddy and travel
greatly hindered. Still more embarrassing than the apparent paucity
of numbers and the inexperience of recruits was the fact that a large
number of the old soldiers of the Continental army, especially those
from the Eastern States, had completed their term of service on the
last day of the year, and were about to march homeward, almost "to
the music of the enemy's cannon." General Knox, whom Congress
had promoted on the day after the attack on Trenton, addressed the
troops December 31, and urged them to remain for a few days
longer. General Thomas Mifflin also came up from Bordentown to
speak to the soldiers. John Howard of Colonel Lippitt's regiment
describes him on this occasion as "mounted on a noblelooking horse
and clothed in an overcoat made up of a large rose blanket and a
large fur cap on his head." In this rather unmilitary garb he urged
the old troops with the most patriotic appeals to stand by the cause
of independence. General Washington told the men that so far they
had served with great fidelity, and he frankly admitted that they had
a 1 Part ii. No. 83.
THE TIMK-EXPIREI) MEN REMAIN 255 FRIENDS' MEETING
HOUSE AT CROSSWICKS right to their discharge, but begged them
to look at the position in which they would place the cause of liberty
if they now left for their homes. He alluded to the victory they had
achieved a few days previous, and showed them how all this would
be naught if they did not attempt to check the advance of the foe.
General Mifflin also had been to Crosswicks, and in company with
General Cadwalader he made an appeal to Colonel Hitchcock's New
England brigade to uphold the cause of national freedom until the
campaign was over. Lieutenant-Colonel William Henshaw said to his
Massachusetts men : " At present this is our business, let us not
forsake it. It is you and I, brave boys, who are banded together in
one common cause. We scorn the thought of flying from it." They
consented. The time of the First and Second Rhode Island regiments
expired with the year, but the Third regiment had still eighteen days
to serve. The appeals to their patriotism and sense of right
prevailed, and they, too, remained.
256 THE BATTLES OF TRENTON AND PRINCETON In these
addresses General MifBin made some promises with reference to
captured property that were never fulfilled. Whether or not these
pledges really affected them, it is difficult to say ; but the request for
at least six weeks more of service and an offer of a bounty of ten
dollars, the same which Pennsylvania had already given her militia,
caused some 1400 of the old Continental troops to poise their
firelocks as a sign that they consented to the agreement. On the first
day of January the eminent financier Robert Morris of Philadelphia
sent " His Excellency General Washington" $50,000 which he had
collected from his friends in Philadelphia on his own credit or had
taken from his private purse. This amount was in addition to the
sum of hard money, " four hundred and ten Spanish dollars, two
crowns, ten shillings and sixpence in English coin and a French half
crown," which he had forwarded to General Washington a few days
previous. The last installment was sent with a characteristic letter
congratulating General Washington on the affair at Trenton, and
adding, " If further occasional supplies of money are necessary, you
may depend on my exertions either in a public or private capacity.
The year seventeen seventy-six is over and I am heartily glad of it
and hope you nor America will be plagued with such another." In this
way when the military chest was empty and the emergency was
pressing, this noble patriot exerted himself, and always with success,
to contribute to the support of the army. The new and old troops
which gathered on the bank of the Assunpink Creek may be stated
as about 5000 effective men, although a large proportion of them
were almost without discipline and had yet to learn the first duty of
the soldier. The old troops were but relics of many regiments
depleted by long marches and much suffering. The splendid
Delaware regiment of Colonel Haslet, which had entered the service
800 strong, was now reduced to about 100 men. General
Smallwood's Maryland troops, which had left the State with over
1000 rifles, numbered but 150 men fit for duty. This gallant
organization, which had commanded the
PREPARING FOR A NEW ATTACK 257 admiration of
Philadclphians, when in July, 1776, they had passed through that
city, a splendid body of soldiers, had lost 250 men at the battle of
Long Island, and was now but a mere fragment of a regiment.
Nevertheless General Knox says that even at this time they were " in
high spirits," but he qualifies the remark with " but in want of rum
and clothine:. It does not appear that uj) to this time any more
cavalry ROBERT MORRIS had joined the army, but the artillery was
increased by the six guns which had been captured from Colonel
Rail's brigade and another battery of two guns organized in
Philadelphia.^ ^ This company of Pennsylvania artillery was
accompanied by Major Thomas Procter, First Lieutenant Hercules
Courtney commanding.
258 THE BATTLES OF TRENTON AND PRINCETON As soon
as General Washington had procured definite information of the
strength and position of the enemy, he sent out, under Brigadier-
General de Fermoy, a detachment consisting of his own brigade,
Colonel Edward Hand's Pennsylvania riflemen and Colonel
Hausegger's German battalion, with Colonel Charles Scott's Virginia
Continental regiment and two guns of Captain Thomas Forrest's
battery, to harass the enemy in every possible way, and to dispute
their advance as much as they were able, that the impending battle
might be postponed for at least twenty-four hours. The Americans
posted themselves at Five Mile Run, a short distance south of the
village of Maidenhead, with pickets up to the town. The British
outpost, as we have stated, was at Eight Mile Run, about a mile
north of Maidenhead. This was the state of affairs on the old
Princeton road at the close of New Year's day.^ During the night it
rained heavily, and in the morning the roads were in a dreadful
condition. According to orders the British army, having been divided
into three columns, commenced the advance from Princeton before
daylight on the morning of Thursday, January 2, with a detachment
of British light infantry and Hessian yagers at their head. One of
these yagers was killed by the American pickets while he was
attempting to capture Elias Hunt, a farmer in that neighborhood.
This Hessian was buried in the woods on the farm of Colonel Joseph
Phillips, opposite the Presbyterian Church. Local tradition avers that
for many years the ghost of the dead man was seen in that wood,
and the negroes of the neighborhood carefully avoided the place
after dark. First Lieutenant Worsley Eames, Second Lieutenant
Charles TurnbuU, — four officers and forty-eight enlisted men
present. First Lieutenant Courtney had been detached from Captain
Forrest's company, in which First Lieutenant Eames took his place.
Lieutenant Courtney was soon after made captain, and Major Procter
was commissioned colonel of the Pennsylvania artillery regiment. 1
For Washington's letter to Congress see Part ii. No. 84.
THE BRITISH ADVAN'CE CHECKED 259 About this time the
commandants of regiments on the advance hnes of the American
army, finding that General de Fermoy had returned to Trenton in a
very questionable manner, determined to resist the advance of the
king's troops without further orders. About ten o'clock the first alarm
gun was fired by the American videttes. Colonel Hand, with his
splendid regiment of riflemen. Captain Henry Miller of his command
being in charge of the skirmish line, conducted the retreat to
Trenton. Every place which would even for a few moments give
shelter from which to take a steady aim was taken advantage of, and
every part of the road was disputed in all possible ways. On one
occasion so stubborn a stand was made by the Americans that a
check was produced on the British advance. They actually fell back
and the patriots carefully pressed toward them. At last, however, the
American detachment was driven to the woods running along the
south bank of the Shabbakonk Creek, and here a severe skirmish
commenced about one o'clock, and a deadly fire was made upon the
British forces, throwing them into considerable confusion. For a long
time this conflict was maintained with great vigor, and the battalions
of von Linsingen and Block, a part of Colonel von Donop's original
command, were actually drawn up in order of battle, expecting then
and there to COLONEL EDWARD HAND
26o THE BATTLES OF TRENTON AND PRINCETON enter
upon the general engagement which they anticipated. For fully three
hours the gallant little American force, somewhat protected by the
dense woods, harassed the redcoats and continually thinned their
ranks with musketry and artillery. Right well did they carry out the
plan of General Washington to consume the entire day, if possible, in
skirmishing, and so retard the enemy's advance toward Trenton. The
weather was very mild, the roads were in wretched conCAPTAIN
HIiNRV MILLER dition, and it was difficult for the British troops,
except those in light marching order, to make much progress
through the heavy mud. At the northern part of the town some little
earthworks had been hastily thrown up at a ravine which led down
to the Assunpink Creek, and behind them four guns had been
placed. Here again the retreating Americans made another post of
resistance, and the Virginia troops distinguished
THE AMERICANS RETREAT 261 themselves, as the
Pennsylvania riflemen had done for several hours previous. It was
now nearly four o'clock in the afternoon, and General Washington
rode up with General Knox to encourage the troops to make as
vigorous a defense as possible. General Greene also came up with a
reinforcement, and he immediately assumed command of the entire
force at this point. Captain William Hull of the Seventh Connecticut
Continental regiment was now in charge of the skirmishers. General
Washington was well pleased with the all-day running fight, and
begged the little party not to yield until compelled to. A battery of
British artillery was soon after brought into position and made every
effort to dislodge the American advance force. Nearly an hour was
consumed before the patriot band, unable any longer to sustain
themselves, began again to yield the ground and retreat down the
Brunswick road into the village, having captured some twenty-five or
thirty men during the day. In this way the last determined stand
beyond the town was taken, and as the Americans began to retreat,
the advance party of the British, about 1500 men, again commenced
their march in strong column, the main army being still ^
considerable distance in the rear. The advance entered Trenton at
the head of King and Queen streets, at the same place where the
guns of Captains Forrest and Hamilton had opened fire on Rail's
brigade on the previous Thursday. On their way down Queen street
the fire from behind houses was continuous and galling. When they
reached Tucker's corner, where Queen street is crossed by Second
street, they first began to receive the shots from the batteries of the
main American army posted on the high ground on the south side of
the Assunpink Creek. General Washington had drawn up his army in
line of battle for nearly three miles along the bank of this stream,
which he called Mill Creek, with the left on the Delaware River, and
had thrown up a series of small earthworks on the ridge and across
the road below the Queen street bridge.
The text on this page is estimated to be only 22.10%
accurate

GENERAL WASHINGTON AT THE BRIDGE OVER THE


ASSUNPINK CREEK 1
CAPTURE OF COLONEL HAUSEGGER 263 Back of this line
of battle he placed a second line consisting of his reserve troops.
General Mercer and his brigade were at Phillips Ford, fully two miles
above the bridge at Trenton and on the extreme right of the army.
Below him was General Cadwalader's command, stationed in an
open field opposite Samuel Henry's mill, somewhat over a mile from
the bridge, while General St. Clair's brigade, with the battery of
CaptainLieutenant Sargent, was posted on the high bank just east of
the bridge across the creek. The advance guard of Cornwallis's army
pressed on down Queen street, still driving the Americans slowly
before them, and killing some, until they arrived at the narrow stone
bridge which spanned with but one arch the Assunpink Creek. This
was the same bridge over which a part of Rail's brigade had escaped
the previous week. The commanding officer of the German battalion
of General de Fermoy's brigade. Colonel Nicholas Hausegger, was
taken prisoner on Queen street before the Americans came to the
bridge. The capture was made in so suspicious a manner that
Colonel Hausegger' s devotion to the cause of liberty has ever since
been doubted. In his " Memoirs," Captain Alexander Graydon of
Colonel John Shee's bat1 Colonel Trumbull painted this picture in
Philadelphia in 1792, and it is now in the art gallery of Yale
University. The artist says of this painting : '• I undertook it coti
ainore (as the commission was unlimited), meaning to give his
militar}- character in the most sublime moment of its exertion, the
evening previous to the battle of Princeton, when, viewing the vast
superiority of his approaching enemy and the impossibility of again
crossing the Delaware or retreating down the river, he conceives the
plan of returning by a night march into the countrj- from which he
had just been driven, thus cutting off the enemy's communication
and destroying his depot of stores and provisions at Brunswick. I
told the President my object : he entered into it warmly, and, as the
work advanced, we talked of the scene, its dangers, its almost
desperation. He looked the scene again and I happily transferred to
the canvas the lofty expression of his animated countenance, the
high resolve to conquer or to perish. The result was, in my own
opinion, eminently successful and the general was satisfied."
264 THE BATTLES OF TRENTON AND PRINCETON talion of
Pennsylvania militia, who was a prisoner in New York city, thus refers
to this man : — "He was a German, or rather a man of no country or
any country ; a citizen of the world, a soldier of fortune, and a true
mercenary. Thinking that our cause was going down rapidly, he saw
no reason for adhering any longer to it ; but came over to the
enemy in the season of our extreme adversity, though he did not
reach us until after the affairs at Trenton and Princeton. Not liking
the name of a deserter, he called himself a prisoner, but certainly, if
he was one, he had much better terms than we had." Besides the
column of British troops on Queen street, a body of men marched
down King street in great haste, expecting to prevent the passage
over the bridge. They opened fire along Front street, but failed to
prevent the Americans crossing the creek. Here the detachment of
skirmishers which all day long had hovered before and around the
enemy, hastily, although with difficulty, crowded through the passage
at the bridge, scarce sixteen feet wide. Colonel Hitchcock's New
England brigade protected these weary men as they filed across the
bridge and took their places with the main army. General
Washington himself was on horseback at one end of the bridge,
overlooking the scene, and by his personal exposure inspired his
men with courage and confidence. It was then after five o'clock and
rapidly growing dark. The British line, however, pressed on to the
bridge, while for about ten minutes the two guns of Captain
Moulder's battery, of Captain Forrest's four-pounders, and of the
naval guns in charge of Captain Read, with the musketry of some of
the infantry ranged on rising ground on either side of the bridge,
kept rattling into their ranks with uncertain aim. By the light made
by the firing it could be seen that the advance of the king's troops,
entirely unaware of the force now before them, had pressed on until
they were within range of the American guns. They made three
fruitless efforts to reach and cross the bridge, but found further
pursuit checked, and were unable to endure the concentrated fire.
The effect of
THE AMERICANS HOLD THE 15RII)r,E 265 this fire upon
them is extremely uncertain and doubtless will never be correctly
ascertained, as no mention of loss is made in any British official
reports. It can hardly have been very destructive to life, although
several statements of eye-witnesses made the carnage severe, when
we take into account how small a number of men marching in single
column could have occupied the space at this point, that this was
the advance party only, and that the darkness certainly made the
firing very inaccurate. In his interesting work on "The Hessians and
the other German Auxiliaries of Great Britain in the Revolutionary
War," Edward J. Lowell gives the Hessian loss during the fighting of
January 2 as four killed and eleven wounded, principally men of
Colonel von Donop's brigade. One of the soldiers mortally wounded
had been the commanding ofificer of the yager picket post on the
River road on the morning after Christmas, and had escaped early in
that fight. In one of the phases of the skirmish on the Shabbakonk
Creek six American riflemen of Hand's regiment jumped out from
behind a bush, with guns in one hand, and motioned and called to
the Hessian soldiers, as though about to desert to them. Lieutenant
Friedrich Wilhelm von Grothausen, with some others, although
cautioned by Captain Ewald, ran out about fifty steps to receive the
surrender, when he was deliberately shot in the breast. He died a
few days afterward in Princeton. The loss of the American army was
small. No return seems to have been made of the casualties. A brief
list has been compiled.^ 1 Private John Goebel, Captain John D.
Woelpper's company, German battalion, killed. Private Jacob
Bottamer, Captain Peter Boyer's company, German battalion, badly
wounded. Private George Filsin, Captain William Wilson's company,
First Pennsylvania Continental regiment, severely wounded in left
leg. Private Wender Fortney. German battalion, wounded. There is a
tradition among the descendants of Captain Richard Clough
Anderson, Fifth Virginia Continental regiment, the officer who made
the little attack on the Pennington road picket at Trenton on
Christmas night (p. 121, ante), that he was also
266 THE BATTLES OF TRENTON AND PRINCETON By some
writers this affair is called " The second battle of Trenton;" by others
"The battle of the Assunpink," while students of the revolutionary
period sometimes allude to it as "the cannonade at Trenton."
General Washington, in his official report, the text of which is
hereafter given, uses the following language in reference to the
action of the enemy in the village : " After some skirmishing the
head of their column reached Trenton about four o'clock, whilst their
rear was as far back as Maidenhead, They attempted to pass
Sampink Creek, which runs through Trenton, at different places, but,
finding the fords guarded, they halted and kindled their fires. We
were drawn up on the other side of the creek. In this situation we
remained till dark, cannonading the enemy, and receiving the fire of
their fieldpieces, which did us little damage." ^ While this was taking
place, Colonel Hitchcock, with his Continental brigade of
Cadwalader's division, had taken position in a field on the
Bloomsbury farm between the bridge and the river, and had thrown
up a temporary breastwork. It was in time, fortunately, for a
determined party, principally of Hessians, attempted to cross the
creek at a good fording-place, probably near where the Warren
street bridge now is, but the brave New England Continentals sent a
rain of lead on the attacking party, and they quickly abandoned the
project. At this place on the bank of the creek a clergyman was
cruelly murdered. The Rev. John Rosbrugh, pastor of wounded in
this fight. Captain WiUiam Mosele}-, Seventh \'irginia Continental
regiment, wounded. Lieutenant-Colonel Samuel B. Webb, aide-de-
camp to General Washington, wounded. 1 General Knox wrote to his
wife : " The enemy pushed our small party through the town with
vigour, though not with much loss. Their retreat over the bridge was
thoroughly secured by the artillery. After they had retired over the
bridge, they advanced within reach of our cannon, who saluted them
with great vociferation and some execution." Captain Thomas
Rodney of Delaware says : " We kept possession of the bridge altho'
the enemy attempted several times to carry it but were repulsed
each time with great slaughter."
HOW CHAPLAIN ROSBRUGH WAS KILLED 267 THE BEAKES
HOUSE, STILL STANDING the Allen's Township Presbyterian Church,
Northampton County, Pennsylvania, and chaplain of the Third
battalion of Northampton County militia, had been taking an early
supper at the Blazing Star Tavern kept by Francis Witt on the corner
opposite to Abraham Hunt's store, when the British ran quickly down
King street. The patriot chaplain, who was of Scotch-Irish parentage,
and sixty-three years of age, rushed from the inn on hearing the
alarm, but found that his horse had already been stolen. He then
endeavored to reach the American lines at the bridge. Failing in this,
he next tried the ford, to which we have just alluded, where he was
caught by a party of Hessians. Here, while praying for his captors,
he was bayoneted seventeen times and cut on the head with many
sabre slashes. His body was stripped of its clothing, robbed of watch
and gold. The British officer in command of the party boasted of the
deed in the tavern a few hours later. General Courtlandt Skinner,
who commanded the New Jersey volunteers in the royal army, highly
applauded the perpetrator of the act. It was now nearly six o'clock
and quite dark, and further attempts to cross the creek were
abandoned until the main
268 THE BATTLES OF TRENTON AND PRINCETON body
should arrive in the village or until morning should enable them to
see the force they were expected to vanquish. The American
artillery, however, still kept up a determined fire, throwing shot into
the town from the high ground on the south side of the creek, which
commanded the village. This was returned by the British light
batteries, although without effect. It is said that balls struck the
building on Ellet Tucker's corner, and that other cannon-shots tore
away part of the wall of the jail, now the Trenton Bank. This
cannonade was kept up at intervals during the early part of the
evening. As General Knox writes, "a few shells we now and then
chucked into the town to prevent them enjoying their new quarters
securely." Most of the British, however, had withdrawn to the high
ground on the Beakes farm, at the upper part of the village, out of
the range of these missiles, although during the evening the streets
were thronged with crowds of redcoats. It will always appear
singular that the invaders did not attempt to cross the creek at some
of the many fordingplaces on the east of the town, such as at
Henry's Mill or Phillips Ford, the one a mile, the other two miles
above the mill-dam at the bridge. It was impossible for General
Washington to protect the whole stream, and had the British forced
the American right and driven them toward Trenton Ferry and the
river, nothing could have saved the entire army. A determined
advance along the line and a half hour's fight would have decided
the battle. The American army would have been well-nigh
annihilated, and with it the fate of America and the hopes of
freemen. When General Cornwallis reached the town, he held a brief
consultation with his general officers, and Sir William Erskine,
Baronet, colonel and aide-de-camp to the king, but acting as the
quartermaster-general of the army in New Jersey, suggested that
perhaps the "old fox" might escape in the night. " If Washington is
the general I take him to be, his army will not be found there in the
morning." Major-General Grant agreed with Cornwallis that the Amer

ANOTHER CRISIS AT HAND 2C9 icans were without means
of retreat. They thought they had General Washington's army safe
enough ; their troops were very weary, and they could without
difficulty "bag him" on the morrow and capture his whole army. The
British forces then built their fires, and settled themselves for a quiet
night, with the expectation of a fight at an early hour on the next
day. Orders were immediately sent out to call the troops at Princeton
and Maidenhead to join the army at Trenton as early as possible on
the next morning. General Cornwallis failed, however, to send out
strong scouting parties that night, as he should have done, to
ascertain the exact position of the foe, and to establish proper picket
lines on his exposed flank. It was said by Colonel von Donop that he
advised the commanding general to send a party across the creek
into the woods on the American right wing to prevent an attack
being made on the British left flank. Fortunate, indeed, for General
Washington's subsequent plans that Cornwallis did not follow the
advice of von Donop. Another of those fearful crises in the fate of
America had arrived, a time similar to the day when the troops of
the flying camp had abandoned the army at Brunswick ; or to those
moments of suspense as the night was passing away and the day
was near at hand while the army was still crossing the river for the
surprise at Trenton ; or that critical time but forty-eight hours
previous, when the term of service of a large part of the Continental
line had expired. It was now almost impossible to retreat across the
river with so large and disciplined an army close upon them. To
leave the bluff of the Assunpink Creek and fall back to Bordentown,
and so southward toward Philadelphia, would be certain annihilation
; to attack the enemy on the morrow and to risk the fortune of a
battle was but to court defeat from troops superior in numbers and
better skilled in the art of war ; to remain in their earthworks until
morning was to invite destruction or an early surrender. The
American army was apparently in a cul-de-sac.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookname.com

You might also like