Professional Documents
Culture Documents
eBook PDF
Visit to download the full and correct content document:
https://ebooksecure.com/download/foundations-of-computer-science-ebook-pdf/
FOUNDATIONS
OF COMPUTER
SCIENCE
Behrouz Forouzan
FOURTH EDITION
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
FOUNDATIONS OF
COMPUTER SCIENCE
4TH EDITION
BEHROUZ FOROUZAN
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
This is an electronic version of the print textbook. Due to electronic rights restrictions,
some third party content may be suppressed. Editorial review has deemed that any suppressed
content does not materially affect the overall learning experience. The publisher reserves the right
to remove content from this title at any time if subsequent rights restrictions require it. For
valuable information on pricing, previous editions, changes to current editions, and alternate
formats, please visit www.cengage.com/highered to search by ISBN#, author, title, or keyword for
materials in your areas of interest.
Important Notice: Media content referenced within the product description or the product
text may not be available in the eBook version.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Publisher: Annabel Ainscow copyright law, without the prior written permission of the
copyright owner.
List Manager: Jennifer Grene
Marketing Manager: Anna Reading For product information and technology assistance,
contact us at emea.info@cengage.com.
Content Project Manager: Phillipa
Davidson-Blake For permission to use material from this text or product,
and for permission queries,
Manufacturing Buyer: Eyvett Davis email emea.permissions@cengage.com.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents
Preface xi
Trademarks xvii
1 Introduction 1
Turing Model 2
Von Neumann Model 4
Computer Components 6
History9
Computer Science as a Discipline 11
Outline of the Course 12
End-Chapter Materials 13
Practice Set 14
2 Number Systems 15
Introduction16
Positional Number Systems 16
Nonpositional Number Systems 31
End-Chapter Materials 32
Practice Set 34
3 Data Storage 39
Data Types 40
Storing Numbers 42
Storing Text 60
Storing Audio 61
Storing Images 63
Storing Video 65
End-Chapter Materials 66
Practice Set 68
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
vi ontents
C
4 Operations on Data 73
Logic Operations 74
Shift Operations 79
Arithmetic Operations 82
End-Chapter Materials 86
Practice Set 87
5 Computer Organization 91
Introduction92
Central Processing Unit 92
Main Memory 94
Input/Output Subsystem 97
Subsystem Interconnection 104
Program Execution 109
Different Architectures 113
A Simple Computer 117
End-Chapter Materials 126
Practice Set 130
8 Algorithms 213
Concept214
Three Constructs 218
Algorithm Representation 219
A More Formal Definition 223
Basic Algorithms 224
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents
vii
Subalgorithms233
Recursion234
End-Chapter Materials 236
Practice Set 238
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
viii ontents
C
14 Databases 369
Introduction370
Database Architecture 372
Database Models 373
The Relational Database Model 374
Database Design 381
Other Database Models 385
End-Chapter Materials 386
Practice Set 388
16 Security 411
Introduction412
Confidentiality415
Other Aspects of Security 428
Firewalls442
End-Chapter Materials 445
Practice Set 447
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents
ix
Searching494
Neural Networks 498
End-Chapter Materials 501
Practice Set 503
A Unicode 533
Planes534
ASCII 535
C Pseudocode 553
Components554
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
x ontents
C
Acronyms 625
Glossary 629
Index 669
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface
Computers play a large part in our everyday lives and will continue to do so in the future.
Computer science is a young discipline that is evolving and progressing. Computer net-
works have connected people from far-flung points of the globe. Virtual reality is creating
three-dimensional images that amaze the eyes. Space exploration owes part of its success
to computers. Computer-generated special effects have changed the movie industry.
Computers have played important roles in genetics.
Audience
This book is written for both academic and professional audience. The book can be used
as a self-study guide for interested professionals. As a textbook, it can be used for a one-
semester or one-quarter course. It is designed as the first course in computer science. This
book is designed for a CS0 course based on the recommendations of the Association of
Computing Machinery (ACM). It covers all areas of computer science in breadth. The
book, totally or partially, can also be used in other disciplines where the students need to
have a bird’s-eye view approach to the computer science.
Organization
The book is made of 20 chapters and 10 appendices.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
xii reface
P
Chapters
Chapters are intended to provide the basic materials. However, not all chapters are needed
for every audience. The professor who teaches the course can decide which chapters to
use. We give guidance below.
Appendices
The appendices are intended to provide a quick reference or review of materials needed to
understand the concepts discussed in the book. There are ten appendices that can be used
by the students for reference and study.
Acronyms
The book contains a list of acronyms for finding the corresponding terms quickly.
Glossary
The book contains an extensive glossary giving full explanations of the terms used in the
book.
Pedagogy
Several pedagogical features of this text are designed to make it particularly easy for
students to understand the materials.
Visual approach
The book presents highly technical subject matter without complex formulas by using a
balance of text and figures. More than 400 figures accompanying the text provide a visual
and intuitive opportunity for understanding the material. Figures are particularly
important in explaining the relationship between components of a whole. For many
students, these concepts are more easily grasped visually than verbally.
Highlighted points
I have repeated important concepts in boxes for quick reference and immediate attention.
Algorithms
The inclusion of algorithms in the text helps students with problem solving and
programming.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface
xiii
End-of-chapter materials
Each chapter ends with a set of materials that includes the following:
Recommended reading
This section gives a brief list of references relative to the chapter. The references can be
used to quickly find the corresponding literature.
Key terms
The new terms used in each chapter are listed at the end of the chapter and their definitions
are included in the glossary.
Summary
Each chapter ends with a summary of the material covered by that chapter. The summary
consolidates the important learning points in one place for ease of access by students.
Practice set
Each chapter includes a practice set designed to reinforce salient concepts and encourage
students to apply them. It consists of three parts: quizzes, questions, and problems.
Quizzes
Quizzes, which are posted on the book website, provide quick concept checking. Students
can take these quizzes to check their understanding of the materials. The feedback to the
students’ responses is given immediately.
Questions
This section contains simple questions about the concepts discussed in the book. Answers
to the odd-numbered questions are posted on the book website to be checked by the
student.
Problems
This section contains more difficult problems that need a deeper understanding of the
materials discussed in the chapter. I strongly recommend that the student trys to solve all
of these problems. Answers to the odd-numbered problems are also posted on the book
website to be checked by the student.
Professor resources
The book contains complete resources for professors who teach the course. They can be
downloaded from the book site. They include:
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
xiv reface
P
Presentations
The site includes a set of colorful and animated PowerPoint presentations for teaching the
course.
Solutions to practice set
Solutions to all questions and problems are provided on the book website for the use of
professors who teach the course.
Student resources
The book contains complete student resources on the book website. They include:
Quizzes
There are quizzes at the end of chapters that can be taken by the students. Students are
encouraged to take these quizzes to test their general understanding of the materials
presented in the corresponding chapter.
Solutions to odd-numbered practice sets
Solutions to all odd-number questions and problems are provided on the book website for
the use of students.
Acknowledgments
It is obvious that the development of a book of this scope needs the support of many
people.
Peer reviewers
I would like to acknowledge the contributions from peer reviewers to the development of
the book. These reviewers are:
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface
xv
Publisher staff
Special thanks go to the staff of the publisher.
Andrew Ashwin Jennifer Grene
Annabel Ainscow Phillipa Davidson-Blake
Behrouz A. Forouzan
Los Angeles, CA.
January 2018
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Trademarks
Throughout the text we have used several trademarks. Rather than insert a trademark
symbol with each mention of the trademark name, we acknowledge the trademarks here
and state that they are used with no intention of infringing upon them. Other product
names, trademarks, and registered trademarks are the property of their respective
owners.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
CHAPTER 1
Introduction
The phrase computer science has a very broad meaning today. However, in this book, we
define the phrase as ‘issues related to the computer’. This introductory chapter first tries
to find out what a computer is, then investigates other issues directly related to comput-
ers. We look first at the Turing model as a mathematical and philosophical definition of
computation. We then show how today’s computers are based on the von Neumann
model. The chapter ends with a brief history of this culture-changing device . . . the
computer.
Objectives
After studying this chapter, the student should be able to:
❑❑ Define the Turing model of a computer.
❑❑ Define the von Neumann model of a computer.
❑❑ Describe the three components of a computer: hardware, data, and software.
❑❑ List topics related to computer hardware.
❑❑ List topics related to data.
❑❑ List topics related to software.
❑❑ Give a short history of computers.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2 Introduction
Another problem with this model is that it does not specify the type of processing, or
whether more than one type of processing is possible. In other words, it is not clear how
many types or sets of operations a machine based on this model can perform. Is it a
specific-purpose machine or a general-purpose machine?
This model could represent a specific-purpose computer (or processor) that is de-
signed to do a single job, such as controlling the temperature of a building or controlling
the fuel usage in a car. However, computers, as the term is used today, are general-purpose
machines. They can do many different types of tasks. This implies that we need to change
this model into the Turing model to be able to reflect the actual computers of today.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.1 Turing Model 3
Figure 1.2 A computer based on the Turing model: programmable data processor
Program
outputs if we change the input data. Finally, if the input data and the program remain the
same, the output should be the same. Let us look at three cases.
Program Sort
Program Sort
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
4 Introduction
Program Sort
Program Add
3, 12, 8, 22 Computer 45
Input data Output data
Program Find
smallest
3, 12, 8, 22 Computer 3
Input data Output data
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.2 Von Neumann Model 5
Computer
Input / output
Arithmetic logic
Input unit (ALU) Output
data data
Memory
Control unit
Memory
Memory is the storage area. This is where programs and data are stored during processing.
We discuss the reasons for storing programs and data later in the chapter.
Control unit
The control unit controls the operations of the memory, ALU, and the input/output
subsystem.
Input / output
The input subsystem accepts input data and the program from outside the computer,
while the output subsystem sends the result of processing to the outside world. The defi-
nition of the input/output subsystem is very broad: it also includes secondary storage
devices such as disk or tape that stores data and programs for processing. When a disk
stores data that results from processing, it is considered an output device: when it reads
data from the disk, it is considered an input device.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
6 Introduction
1.3.2 Data
The von Neumann model clearly defines a computer as a data processing machine that
accepts the input data, processes it, and outputs the result.
Storing data
The von Neumann model does not define how data must be stored in a computer. If a
computer is an electronic device, the best way to store data is in the form of an electrical
signal, specifically its presence or absence. This implies that a computer can store data in
one of two states.
Obviously, the data we use in daily life is not just in one of two states. For example,
our numbering system uses digits that can take one of ten states (0 to 9). We cannot (as
yet) store this type of information in a computer: it needs to be changed to another system
that uses only two states (0 and 1). We also need to be able to process other types of data
(text, image, audio, video). These also cannot be stored in a computer directly, but need to
be changed to the appropriate form (0s and 1s).
In Chapter 3, we will learn how to store different types of data as a binary pattern, a
sequence of 0s and 1s. In Chapter 4, we show how data is manipulated, as a binary pat-
tern, inside a computer.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.3 Computer Components 7
Organizing data
Although data should be stored only in one form inside a computer, a binary pattern, data
outside a computer can take many forms. In addition, computers (and the notion of data
processing) have created a new field of study known as data organization, which asks the
question: can we organize our data into different entities and formats before storing them
inside a computer? Today, data is not treated as a flat sequence of information. Instead,
data is organized into small units, small units are organized into larger units, and so on. We
will look at data from this point of view in Chapters 11–14.
Program
Data
Memory
A sequence of instructions
Another requirement of the model is that the program must consist of a sequence of
instructions. Each instruction operates on one or more data items. Thus, an instruction can
change the effect of a previous instruction. For example, Figure 1.7 shows a program that
inputs two numbers, adds them, and prints the result. This program consists of four
individual instructions.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
8 Introduction
Program
We might ask why a program must be composed of instructions. The answer is reusability.
Today, computers do millions of tasks. If the program for each task was an independent
entity without anything in common with other programs, programming would be diffi-
cult. The Turing and von Neumann models make programming easier by defining the
different instructions that can be used by computers. A programmer can then combine
these instructions to make any number of programs. Each program can be a different
combination of different instructions.
Algorithms
The requirement for a program to consist of a sequence of instructions made programming
possible, but it brought another dimension to using a computer. A programmer must not
only learn the task performed by each instruction, but also learn how to combine these
instructions to do a particular task. Looking at this issue differently, a programmer must
first solve the problem in a step-by-step manner, then try to find the appropriate instruction
(or series of instructions) to implement those steps. This step-by-step solution is called an
algorithm. Algorithms play a very important role in computer science and are discussed in
Chapter 8.
Languages
At the beginning of the computer age there was only one computer language, machine
language. Programmers wrote instructions (using binary patterns) to solve a problem.
However, as programs became larger, writing long programs using these patterns became
tedious. Computer scientists came up with the idea of using symbols to represent binary
patterns, just as people use symbols (words) for commands in daily life. Of course, the
symbols used in daily life are different from those used in computers. So the concept of
computer languages was born. A natural language such as English is rich and has many
rules to combine words correctly: a computer language, on the other hand, has a more
limited number of symbols and also a limited number of words. We will study computer
languages in Chapter 9.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.4 History 9
Software engineering
Something that was not defined in the von Neumann model is software engineering,
which is the design and writing of structured programs. Today it is not acceptable just to
write a program that does a task: the program must follow strict rules and principles. We
discuss these principles, collectively known as software engineering, in Chapter 10.
Operating systems
During the evolution of computers, scientists became aware that there was a series of
instructions common to all programs. For example, instructions to tell a computer where
to receive data and where to send data are needed by almost all programs. It is more
efficient to write these instructions only once for the use of all programs. Thus the concept
of the operating system emerged. An operating system originally worked as a manager to
facilitate access to the computer’s components by a program, although today operating
systems do much more. We will learn about them in Chapter 7.
1.4 HISTORY
In this section we briefly review the history of computing and computers. We divide this
history into three periods.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
10 Introduction
First generation
The first generation (roughly 1950–1959) is characterized by the emergence of commercial
computers. During this time, computers were used only by professionals. They were
locked in rooms with access limited only to the operator or computer specialist. Computers
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.5 Computer Science as a Discipline 11
were bulky and used vacuum tubes as electronic switches. At this time, computers were
affordable only by big organizations.
Second generation
Second-generation computers (roughly 1959–1965) used transistors instead of vacuum
tubes. This reduced the size of computers, as well as their cost, and made them affordable
to small and medium-size corporations. Two high-level programming languages,
FORTRAN and COBOL (see Chapter 9), were invented and made programming easier.
These two languages separated the programming task from the computer operation task.
A civil engineer, for example could write a FORTRAN program to solve a problem
without being involved in the electronic details of computer architecture.
Third generation
The invention of the integrated circuit (transistors, wiring, and other components on a
single chip) reduced the cost and size of computers even further. Minicomputers appeared
on the market. Canned programs, popularly known as software packages, became available.
A small corporation could buy a package, for example for accounting, instead of writing
its own program. A new industry, the software industry, was born. This generation lasted
roughly from 1965 to 1975.
Fourth generation
The fourth generation (approximately 1975–1985) saw the appearance of m icrocomputers.
The first desktop calculator, the Altair 8800, became available in 1975. Advances in the
electronics industry allowed whole computer subsystems to fit on a single circuit board.
This generation also saw the emergence of computer networks (see Chapter 6).
Fifth generation
This open-ended generation started in 1985. It has witnessed the appearance of laptop
and palmtop computers, improvements in secondary storage media (CD-ROM, DVD, and
so on), the use of multimedia, and the phenomenon of virtual reality.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
12 Introduction
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.7 End-Chapter Materials 13
1.7.3 Summary
❑❑ The idea of a universal computational device was first put forward by Alan Turing
in 1936. He proposed that all computations can be performed by a special kind of a
machine, now called a Turing machine.
❑❑ The von Neumann model defines a computer as four subsystems: memory, arithmetic
logic unit, control unit, and input/output. The von Neumann model states that the
program must be stored in memory.
❑❑ We can think of a computer as made up of three components: computer hardware,
data, and computer software.
❑❑ The history of computing and computers can be divided into three periods: the
period of mechanical machines (before 1930), the period of electronic computers
(1930–1950), and the period that includes the five modern computer generations.
❑❑ With the invention of computers a new discipline has evolved, computer science, which
is now divided into several areas.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
14 Introduction
1.8.3 Problems
P1-1. Explain why a computer cannot solve a problem for which there is no solution
outside the computer.
P1-2. If a small cheap computer can do the same thing as a large expensive computer,
why do people need to have a large one?
P1-3. Do some research and find out whether the Pascaline calculator is a computer
according to the Turing model.
P1-4. Do some research and find out whether Leibnitz’ Wheel is a computer according
to the Turing model.
P1-5. Do some research and find out whether the Jacquard Loom is a computer accord-
ing to the Turing model.
P1-6. Do some research and find out whether Babbage’s Analytical Engine is a com-
puter according to the von Neumann model.
P1-7. Do some research about the ABC computer and find out whether this computer
followed the von Neumann model.
P1-8. Do some research and find out in which computer generation keyboards
originated.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
CHAPTER 2
Number Systems
This chapter is a prelude to Chapters 3 and 4. In Chapter 3 we will show how data is
stored inside the computer. In Chapter 4 we will show how logic and arithmetic opera-
tions are performed on data. This chapter is a preparation for understanding the contents
of Chapters 3 and 4. Readers who know about number systems can skip this chapter and
move on to Chapter 3 without loss of continuity. Note that the number systems discussed
in this chapter are ‘paper and pencil representations’: we show how these numbers are
stored in a computer in Chapter 3.
Objectives
After studying this chapter, the student should be able to:
❑❑ Understand the concept of number systems.
❑❑ Distinguish between nonpositional and positional number systems.
❑❑ Describe the decimal system (base 10).
❑❑ Describe the binary system (base 2).
❑❑ Describe the hexadecimal system (base 16).
❑❑ Describe the octal system (base 8).
❑❑ Convert a number in binary, octal, or hexadecimal to a number in the decimal system.
❑❑ Convert a number in the decimal system to a number in binary, octal, or h
exadecimal.
❑❑ Convert a number in binary to octal and vice versa.
❑❑ Convert a number in binary to hexadecimal and vice versa.
❑❑ Find the number of digits needed in each system to represent a particular value.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
16 Number Systems
2.1 INTRODUCTION
A number system (or numeral system) defines how a number can be represented using
distinct symbols. A number can be represented differently in different systems. For exam-
ple, the two numbers (2A)16 and (52)8 both refer to the same quantity, (42)10, but their
representations are different. This is the same as using the words cheval (French) and
equus (Latin) to refer to the same entity, a horse.
As we use symbols (characters) to create words in a language, we use symbols (digits)
to represent numbers. However, we know that the number of symbols (characters) in any
language is limited. We need to repeat characters and combine them to create words. It is
the same for numbers: we have a limited number of symbols (digits) to represent num-
bers, which means that the digits need to be repeated.
Several number systems have been used in the past and can be categorized into two
groups: positional and nonpositional systems. Our main goal is to discuss the positional
number systems, but we also give examples of nonpositional systems.
n 5 6 SK21 3 bK21 1… 1 S1 3 b1 1 S0 3 b0
in which S is the set of symbols, b is the base (or radix), which is equal to the total num-
ber of the symbols in the set S, and SK and SL are symbols in the whole and fraction parts
of the number. Note that we have used an expression that can be extended from the right
or from the left. In other words, the power of b can be 0 to K 2 1 in one direction and
21 to 2L in the other direction. The terms with non negative powers of b are related to
the integral part of the number, while the terms with negative power of b are related to
the fractional part of the number. The 6 sign shows that the number can be either posi-
tive or negative. We will study several positional number systems in this chapter.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2.2 Positional Number Systems 17
but for simplicity, we often drop the parentheses, the base, and the plus sign (if the num-
ber is positive). For example, we write the number 1(552.23)10 as 552.23—the base and
plus signs are implicit.
Integers
An integer (an integral number with no fractional part) in the decimal system is familiar
to all of us—we use integers in our daily life. In fact, we have used them so much that they
are intuitive. We represent an integer as 6 SK–1 … S1 S0. The value is calculated as:
N= +
– SK−1 10 + SK−2 10
K−1 K−2
+ + S2 102 + S1 101 + S0 100 Values
+
+
+
Example 2.1
The following shows the place values for the integer 1224 in the decimal system:
Note that the digit in position 1 has the value 20, but the same digit in position 2 has the
value 200. Also note that we normally drop the plus sign, but it is implicit.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
18 Number Systems
Example 2.2
The following shows the place values for the decimal number –7508. We have used 1, 10,
100, and 1000 instead of powers of 10:
Maximum value
Sometimes we need to know the maximum value of a decimal integer that can be repre-
sented by K digits. The answer is Nmax 5 10K 2 1. For example, if K 5 5, then the maxi-
mum value is Nmax 5 105 2 1 5 99 999.
Reals
A real (a number with a fractional part) in the decimal system is also familiar. For example,
we use this system to show dollars and cents ($23.40). We can represent a real as 6 SK–1 …
S1 S0 · S–1 … S–L. The value is calculated as:
in which S1 is a digit, b 5 10 is the base, K is the number of digits in the integral part, and
L is the number of digits in the fractional part. The decimal point we use in our
representation separates the fractional part from the integral part.
Example 2.3
The following shows the place values for the real number 124.13:
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2.2 Positional Number Systems 19
Integers
We can represent an integer as 6 (SK–1 … S1 S0)2. The value is calculated as:
in which Si is a digit, b 5 2 is the base, and K is the number of bits. Another way to show
a binary number is to use place values (20, 21, … 2K21). Figure 2.2 shows a number in the
binary number system using place values:
N= – SK−1 2
+ K−1
+ SK−2 2K−2 + + S2 22 + S1 21 + S0 20 Values
+
+
+
Example 2.4
The following shows that the number (11001)2 in binary is the same as 25 in decimal. The
subscript 2 shows that the base is 2:
24 23 22 21 20 Place values
1 1 0 0 1 Number
N5 132 4 1 132 3 1 032 2 1 032 1 1 132 0
Decimal
Maximum value
The maximum value of a binary integer with K digits is Nmax 5 2K – 1. For example, if
K 5 5, then the maximum value is Nmax 5 25 – 1 5 31.
Reals
A real—a number with an optional fractional part—in the binary system can be made of
K bits on the left and L bits on the right, 6 (SK–1 … S1 S0 · S–1 … S–L)2. The value can be
calculated as:
in which Si is a bit, b 5 2 is the base, K is the number of bits to the left, and L is the num-
ber of bits to the right of the decimal point. Note that K starts from 0, but L starts from
21. The highest power is K 2 1 and the lowest power is 2L.
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
20 Number Systems
Example 2.5
The following shows that the number (101.11)2 in binary is equal to the number 5.75 in
decimal:
Note that the value in the decimal system is R 5 4 1 0 1 1 1 0.5 1 0.25 5 5.75.
Integers
We can represent an integer as 6 SK–1 … S1 S0. The value is calculated as:
+
– SK−1 SK−2 S2 S1 S0 Number
N= +
– SK−1 16 + SK−2 16
K−1 K−2
+ + S2 162 + S1 161 + S0 160 Values
+
+
+
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2.2 Positional Number Systems 21
Example 2.6
The following shows that the number (2AE)16 in hexadecimal is equivalent to 686 in
decimal:
Note that the value in the decimal system is N 5 512 1 160 1 14 5 686.
Maximum value
The maximum value of a hexadecimal integer with K digits is Nmax 5 16K – 1. For example,
if K 5 5, then the maximum value is Nmax 5 165 – 1 5 1 048 575.
Reals
Although a real number can be also represented in the hexadecimal system, it is not very
common.
Integers
We can represent an integer as 6 SK–1 … S1 S0. The value is calculated as:
N= +
– SK−1 8
K−1
+ SK−2 8K−2 + + S2 82 + S1 81 + S0 80 Values
+
+
+
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
22 Number Systems
Example 2.7
The following shows that the number (1256)8 in octal is the same as 686 in decimal:
83 82 81 80 Place values
1 2 5 6 Number
N 5 1 3 83 1 2 3 82 1 5 3 81 1 6 3 80 Values
Maximum Value
The maximum value of an octal integer with K digits is Nmax 5 8K − 1. For example, if
K 5 5, then the maximum value is Nmax 5 85 − 1 5 32767.
Reals
Although a real number can be also represented in the octal system, it is not very common.
Decimal 10 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 2345.56
Binary 2 0, 1 (1001.11)2
Octal 8 0, 1, 2, 3, 4, 5, 6, 7 (156.23)8
Hexadecimal 16 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (A2C.A1)16
Table 2.2 shows how the number 15 is represented with two digits in decimal, four digits
in binary, two digits in octal, and only one digit in hexadecimal. The hexadecimal repre-
sentation is definitely the shortest.
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2.2 Positional Number Systems 23
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
2.2.6 Conversion
We need to know how to convert a number in one system to the equivalent number in another
system. Since the decimal system is more familiar than the other systems, we first show how
to covert from any base to decimal. Then we show how to convert from decimal to any base.
Finally, we show how we can easily convert from binary to hexadecimal or octal and vice versa.
Decimal point
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
24 Number Systems
Example 2.8
The following shows how to convert the binary number (110.11)2 to decimal: (110.11)2
5 6.75:
Binary 1 1 0 · 1 1
Place values 2 2
2 1
2 0
2 21
222
Partial results 4 1 2 1 0 1 0.5 1 0.25
Decimal: 6.75
Example 2.9
The following shows how to convert the hexadecimal number (1A.23)16 to decimal:
Hexadecimal 1 A · 2 3
Place values 16 1
16 0
16 21
1622
Partial result 16 1 10 1 0.125 1 0.012
Decimal: 26.137
Note that the result in the decimal notation is not exact, because 3 3 1622 5 0.01171875.
We have rounded this value to three digits (0.012). In other words, (1A.23)16 ≈ 26.137.
When we convert a number in decimal to hexadecimal, we need to specify how many
digits we allow to the right of the decimal point.
Example 2.10
The following shows how to convert (23.17)8 to decimal:
Octal 2 3 · 1 7
Place values 8 1
8 0
8 21
822
Partial result 16 1 3 1 0.125 1 0.109
Decimal: 19.234
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2.2 Positional Number Systems 25
Given:
Start source and base
Create an
empty destination
Quotient becomes
new source
[Condition is true]
Return:
Stop destination
We call the integral part of the decimal number the source and the integral part of the
converted number the destination. We first create an empty destination. We then repeti-
tively divide the source to get the quotient and the remainder. The remainder is inserted
to the left of the destination. The quotient becomes a new source. Figure 2.7 shows how
the destination is made with each repetition.
Divide by b
0 Q Q Q S Q: Quotients
R: Remainders
R R R R S: Source
D: Destination
D DK−1 D2 D1 D0 Di: Destination digit
We use Figure 2.6 to illustrate the process manually with some examples.
Example 2.11
The following shows how to convert 35 in decimal to binary. We start with the number in
decimal, we move to the left while continuously finding the quotients and the remainder
of division by 2. The result is 35 5 (100011)2:
0 ← 1 ← 2 ← 4 ← 8 ← 17 ← 35 Decimal
↓ ↓ ↓ ↓ ↓ ↓
1 0 0 0 1 1 Binary
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. WCN 02-200-202
Copyright 2018 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Another random document with
no related content on Scribd:
Zweiundzwanzigstes Kapitel.