Trademark Notice:
Product or corporate names may be trademarks or registered trademarks, and are used only for
identification 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
With all my love to
Cheri Klink, Sherre Kozloff, and Laura Smith
vii
Contents
Preface, xix
Acknowledgments and Contributions, xxi
How to Use This Textbook, xxiii
Author, xxv
C
hapter
1
◾
I
ntroduCtIon
to
L
Inux
1
1.1 WHY LINUX? 1
1.2 OPERATING SYSTEMS 3
1.3 THE LINUX OPERATING SYSTEM: GUIs 5
1.3.1 User Account and Logging In
6
1.3.2 Gnome
7
1.3.3 KDE Desktop Environment
13
1.4 THE LINUX COMMAND LINE 15
1.4.1 The Interpreter
15
1.4.2 The Shell
16
1.4.3 The CLI over the GUI
17
1.5 VIRTUAL MACHINES 19
1.6 UNIX AND LINUX 21
1.7 TYPES OF USERS 23
1.8 WHAT IS A COMPUTER? 25
1.8.1 The IPOS Cycle
25
1.8.2 Computer Hardware
26
1.8.3 Software and Users
28
1.8.4 Types of Computers
29
1.9 THIS TEXTBOOK 31
1.10 CHAPTER REVIEW 32
REVIEW QUESTIONS 34
viii
◾
Contents
C
hapter
2
◾
t
he
B
ash
s
heLL
37
2.1 INTRODUCTION 37
2.2 ENTERING LINUX COMMANDS 38
2.2.1 Simple Linux Commands
39
2.2.2 Commands with Options and Parameters
40
2.3 MAN PAGES 43
2.4 BASH FEATURES 46
2.4.1 Recalling Commands through History
46
2.4.2 Shell Variables
47
2.4.3 Aliases
51
2.4.4 Command Line Editing
52
2.4.5 Redirection
54
2.4.6 Other Useful Bash Features
57
2.5 OTHER SHELLS 59
2.6 INTERPRETERS 61
2.6.1 Interpreters in Programming Languages
61
2.6.2 Interpreters in Shells
62
2.6.3 The Bash Interpreter
63
2.7 CHAPTER REVIEW 64
REVIEW QUESTIONS 67
C
hapter
3
◾
n
avIgatIng
the
L
Inux
F
ILe
s
ystem
71
3.1 INTRODUCTION 71
3.1.1 File System Terminology
72
3.1.2 A Hierarchical File System
73
3.2 FILENAME SPECIFICATION 74
3.2.1 The Path
74
3.2.2 Specifying Paths above and below the Current Directory
76
3.2.3 Filename Arguments with Paths
76
3.2.4 Specifying Filenames with Wildcards
77
3.3 FILE SYSTEM COMMANDS 79
3.3.1 Directory Commands
80
3.3.2 File Movement and Copy Commands
81
3.3.3 File Deletion Commands
85
3.3.4 Creating and Deleting Directories
86
Contents
◾
ix
3.3.5 Textfile Viewing Commands
87
3.3.6 File Comparison Commands
88
3.3.7 File Manipulation Commands
89
3.3.8 Other File Commands of Note
91
3.3.9 Hard and Symbolic Links
92
3.4 LOCATING FILES 93
3.4.1 The GUI Search Tool
94
3.4.2 The Find Command
94
3.4.3 Other Means of Locating Files
97
3.5 PERMISSIONS 99
3.5.1 What Are Permissions?
99
3.5.2 Altering Permissions from the Command Line
100
3.5.3 Altering Permissions from the GUI
103
3.5.4 Advanced Permissions
104
3.6 LINUX FILE SYSTEM STRUCTURE 105
3.7 SECONDARY STORAGE DEVICES 107
3.7.1 The Hard Disk Drive
108
3.7.2 Magnetic Tape
110
3.7.3 Optical Disk and USB Drive
111
3.8 FILE COMPRESSION 113
3.8.1 Types of File Compression
113
3.8.2 The LZ Algorithm for Lossless Compression
113
3.8.3 Other Lossless Compression Algorithms
115
3.9 CHAPTER REVIEW 116
REVIEW QUESTIONS 118
C
hapter
4
◾
m
anagIng
p
roCesses
125
4.1 INTRODUCTION 125
4.2 FORMS OF PROCESS MANAGEMENT 127
4.2.1 Single Process Execution
128
4.2.2 Concurrent Processing
129
4.2.3 Interrupt Handling
132
4.3 STARTING, PAUSING, AND RESUMING PROCESSES 133
4.3.1 Ownership of Running Processes
133
4.3.2 Launching Processes from a Shell
135
4.4 MONITORING PROCESSES 138
x
◾
Contents
4.4.1 GUI Monitoring Tools
138
4.4.2 Command-Line Monitoring Tools
140
4.5 MANAGING LINUX PROCESSES 145
4.6 KILLING PROCESSES 147
4.6.1 Process Termination
147
4.6.2 Methods of Killing Processes
149
4.6.3 Methods to Shut Down Linux
150
4.7 CHAPTER REVIEW 151
REVIEW QUESTIONS 155
C
hapter
5
◾
L
Inux
a
ppLICatIons
159
5.1 INTRODUCTION 159
5.2 TEXT EDITORS 160
5.2.1 vi (vim)
161
5.2.2 emacs
164
5.2.3 gedit
170
5.3 PRODUCTIVITY SOFTWARE 171
5.4 LATEX 172
5.5 ENCRYPTION SOFTWARE 175
5.5.1 What Is Encryption?
175
5.5.2 Openssl
177
5.6 EMAIL PROGRAMS 180
5.6.1 Sending Email Messages
181
5.6.2 Reading Email Messages
182
5.7 NETWORK SOFTWARE 183
5.7.1 Internet Protocol Addressing
184
5.7.2 Remote Access and File Transfer Programs
185
5.7.3 Linux Network Inspection Programs
188
5.8 CHAPTER REVIEW 195
REVIEW PROBLEMS 198
C
hapter
6
◾
r
eguLar
e
xpressIons
201
6.1 INTRODUCTION 201
6.2 METACHARACTERS 203
6.2.1 Controlling Repeated Characters through *,
+
, and ?
203
6.2.2 Using and Modifying the ‘.’ Metacharacter
205
6.2.3 Controlling Where a Pattern Matches
206
Contents
◾
xi
6.2.4 Matching from a List of Options
207
6.2.5 Matching Characters That Must Not Appear
209
6.2.6 Matching Metacharacters Literally
210
6.2.7 Controlling Repetition
211
6.2.8 Selecting between Sequences
212
6.3 EXAMPLES 213
6.4 GREP 216
6.4.1 Using grep/egrep
216
6.4.2 Useful egrep Options
219
6.4.3 Additional egrep Examples
221
6.4.4 A Word of Caution: Use Single Quote Marks
224
6.5 SED 225
6.5.1 Basic sed Syntax
225
6.5.2 Placeholders
228
6.6 awk 230
6.6.1 Simple awk Pattern-Action Pairs
231
6.6.2 BEGIN and END Sections
234
6.6.3 More Complex Conditions
235
6.6.4 Other Forms of Control
239
6.7 CHAPTER REVIEW 240
REVIEW QUESTIONS 241
C
hapter
7
◾
s
heLL
s
CrIptIng
245
7.1 INTRODUCTION 245
7.2 SIMPLE SCRIPTING 246
7.2.1 Scripts of Linux Instructions
246
7.2.2 Running Scripts
247
7.2.3 Scripting Errors
248
7.3 VARIABLES, ASSIGNMENTS, AND PARAMETERS 249
7.3.1 Bash Variables
249
7.3.2 Assignment Statements
250
7.3.3 Executing Linux Commands from within
Assignment Statements
252
7.3.4 Arithmetic Operations in Assignment Statements
254
7.3.5 String Operations Using
expr
256
7.3.6 Parameters
257
xii
◾
Contents
7.4 INPUT AND OUTPUT 258
7.4.1 Output with echo
258
7.4.2 Input with read
260
7.5 SELECTION STATEMENTS 263
7.5.1 Conditions for Strings and Integers
263
7.5.2 File Conditions
266
7.5.3 The If-Then and If-Then-Else Statements
268
7.5.4 Nested Statements
270
7.5.5 Case Statement
272
7.5.6 Conditions outside of Selection Statements
276
7.6 LOOPS 277
7.6.1 Conditional Loops
277
7.6.2 Counter-Controlled Loops
278
7.6.3 Iterator Loops
279
7.6.4 Using the Seq Command to Generate a List
281
7.6.5 Iterating over Files
281
7.6.6 The While Read Statement
284
7.7 ARRAYS 285
7.7.1 Declaring and Initializing Arrays
286
7.7.2 Accessing Array Elements and Entire Arrays
287
7.7.3 Example Scripts Using Arrays
288
7.8 STRING MANIPULATION 289
7.8.1 Substrings Revisited
289
7.8.2 String Regular Expression Matching
290
7.9 FUNCTIONS 293
7.9.1 Defining Bash Functions
293
7.9.2 Using Functions
295
7.9.3 Functions and Variables
296
7.9.4 Exit and Return Statements
298
7.10 C-SHELL SCRIPTING 299
7.10.1 Variables, Parameters, and Commands
299
7.10.2 Input and Output
300
7.10.3 Control Statements
301
7.10.4 Reasons to Avoid csh Scripting
303
7.11 CHAPTER REVIEW 304
REVIEW QUESTIONS 307
Contents
◾
xiii
C
hapter
8
◾
I
nstaLLIng
L
Inux
313
8.1 INTRODUCTION 313
8.1.1 Installation Using Virtual Machines
314
8.1.2 Preinstallation Questions
314
8.2 THE LINUX-OPERATING SYSTEM 316
8.2.1 Operating Systems and Modes of Operation
316
8.2.2 System Calls
317
8.2.3 The Kernel
318
8.2.4 Loading and Removing Modules
320
8.3 INSTALLING CENTOS 6 321
8.3.1 The Basic Steps
321
8.3.2 Disk-Partitioning Steps
325
8.3.3 Finishing Your Installation
330
8.4 INSTALLING UBUNTU 331
8.5 SOFTWARE INSTALLATION CHOICES 334
8.6 VIRTUAL MEMORY 335
8.7 SETTING UP NETWORK CONNECTIVITY AND A PRINTER 338
8.7.1 Establishing Network Connections
338
8.7.2 Establishing Printers
339
8.8 SELINUX 341
8.8.1 SELinux Components
342
8.8.2 Altering Contexts
343
8.8.3 Rules
344
8.9 CHAPTER REVIEW 345
REVIEW PROBLEMS 347
C
hapter
9
◾
u
ser
a
CCounts
351
9.1 INTRODUCTION 351
9.2 CREATING ACCOUNTS AND GROUPS 352
9.2.1 Creating User and Group Accounts through the GUI
352
9.2.2 Creating User and Group Accounts from the Command Line
354
9.2.3 Creating a Large Number of User Accounts
358
9.3 MANAGING USERS AND GROUPS 361
9.3.1 GUI User Manager Tool
361
9.3.2 Command Line User and Group Management
362
xiv
◾
Contents
9.4 PASSWORDS 365
9.4.1 Ways to Automatically Generate Passwords
365
9.4.2 Managing Passwords
367
9.4.3 Generating Passwords in Our Script
368
9.5 PAM 370
9.5.1 What Does PAM Do?
370
9.5.2 Configuring PAM for Applications
370
9.5.3 An Example Configuration File
372
9.6 ESTABLISHING COMMON USER RESOURCES 373
9.6.1 Populating User Home Directories with Initial Files
373
9.6.2 Initial User Settings and Defaults
375
9.7 THE SUDO COMMAND 377
9.8 ESTABLISHING USER AND GROUP POLICIES 380
9.8.1 We Should Ask Some Questions before Generating Policies
380
9.8.2 Four Categories of Computer Usage Policies
381
9.9 CHAPTER REVIEW 383
REVIEW QUESTIONS 385
C
hapter
10
◾
t
he
L
Inux
F
ILe
s
ystem
391
10.1 INTRODUCTION 391
10.2 STORAGE ACCESS 392
10.2.1 Disk Storage and Blocks
392
10.2.2 Block Indexing Using a File Allocation Table
393
10.2.3 Other Disk File Details
394
10.3 FILES 394
10.3.1 Files versus Directories
395
10.3.2 Nonfile File Types
395
10.3.3 Links as File Types
397
10.3.4 File Types
398
10.3.5 inode
399
10.3.6 Linux Commands to Inspect inodes and Files
402
10.4 PARTITIONS 405
10.4.1 File System Redefined
405
10.4.2 Viewing the Available File Systems
406
10.4.3 Creating Partitions
409
10.4.4 Altering Partitions
411
Contents
◾
xv
10.4.5 Using a Logical Volume Manager to Partition
411
10.4.6 Mounting and Unmounting File Systems
414
10.4.7 Establishing Quotas on a File System
417
10.5 LINUX TOP-LEVEL DIRECTORIES REVISITED 419
10.5.1 Root Partition Directories
419
10.5.2 /dev, /proc, and /sys
422
10.5.3 The /etc Directory
424
10.5.4 /home
426
10.5.5 /usr
426
10.5.6 /var
427
10.5.7 Directories and Changes
427
10.6 OTHER SYSTEM ADMINISTRATION DUTIES 428
10.6.1 Monitoring Disk Usage
428
10.6.2 Identifying Bad Blocks and Disk Errors
429
10.6.3 Protecting File Systems
430
10.6.4 Isolating a Directory within a File System
435
10.7 CHAPTER REVIEW 436
REVIEW PROBLEMS 439
C
hapter
11
◾
s
ystem
I
nItIaLIzatIon
and
s
ervICes
445
11.1 INTRODUCTION 445
11.2 BOOT PROCESS 446
11.2.1 Volatile and Nonvolatile Memory
446
11.2.2 Boot Process
447
11.3 BOOT LOADING IN LINUX 448
11.3.1 Boot Loaders
448
11.3.2 Loading the Linux Kernel
449
11.4 INITIALIZATION OF THE LINUX OPERATING SYSTEM 450
11.4.1 inittab File and Runlevels
450
11.4.2 Executing rcS.conf and rc.sysinit
453
11.4.3 rc.conf and rc Scripts
454
11.4.4 Finalizing System Initialization
456
11.5 LINUX SERVICES 457
11.5.1 Categories of Services
457
11.5.2 Examination of Significant Linux Services
458
11.5.3 Starting and Stopping Services
463
xvi
◾
Contents
11.5.4 Examining the atd Service Control Script
465
11.6 CONFIGURING SERVICES THROUGH GUI TOOLS 471
11.6.1 Firewall Configuration Tool
472
11.6.2 kdump Configuration Tool
473
11.7 CONFIGURING SERVICES THROUGH CONFIGURATION
FILES 475
11.7.1 Configuring Syslog
475
11.7.2 Configuring nfs
477
11.7.3 Other Service Configuration Examples
478
11.8 CHAPTER REVIEW 480
REVIEW PROBLEMS 481
C
hapter
12
◾
n
etwork
C
onFIguratIon
485
12.1 INTRODUCTION 485
12.2 COMPUTER NETWORKS AND TCP/IP 486
12.2.1 Broadcast Devices
486
12.2.2 The TCP/IP Protocol Stack
487
12.2.3 Ports
490
12.2.4 IPv6
491
12.2.5 Domains, the DNS, and IP Aliases
492
12.3 NETWORK SERVICES AND FILES 494
12.3.1 The Network Service
494
12.3.2 The /etc/sysconfig/network-scripts Directory’s Contents
495
12.3.3 Other Network Services
497
12.3.4 The xinetd Service
499
12.3.5 Two /etc Network Files
502
12.4 OBTAINING IP ADDRESSES 503
12.4.1 Static IP Addresses
503
12.4.2 Dynamic IP Addresses
504
12.4.3 Setting up a DHCP Server
505
12.5 NETWORK PROGRAMS 507
12.5.1 The ip Program
507
12.5.2 Other Network Commands
509
12.6 THE LINUX FIREWALL 510
12.6.1 The iptables-config File
511
12.6.2 Rules for the iptables File
511
Contents
◾
xvii
12.6.3 Examples of Firewall Rules
515
12.7 WRITING YOUR OWN NETWORK SCRIPTS 517
12.7.1 A Script to Test Network Resource Response
518
12.7.2 A Script to Test Internet Access
519
12.7.3 Scripts to Compile User Login Information
521
12.8 CHAPTER REVIEW 522
REVIEW QUESTIONS 526
C
hapter
13
◾
s
oFtware
I
nstaLLatIon
and
m
aIntenanCe
531
13.1 INTRODUCTION 531
13.2 SOFTWARE INSTALLATION QUESTIONS 532
13.3 INSTALLING SOFTWARE FROM A GUI 533
13.3.1 Add/Remove Software GUI in CentOS
533
13.3.2 Ubuntu Software Center
535
13.4 INSTALLATION FROM PACKAGE MANAGER 536
13.4.1 RPM
537
13.4.2 YUM
540
13.4.3 APT
544
13.5 INSTALLATION OF SOURCE CODE 546
13.5.1 Obtaining Installation Packages
547
13.5.2 Extracting from the Archive
547
13.5.3 Running the configure Script
549
13.5.4 The make Step
549
13.5.5 The make install Step
551
13.6 THE GCC COMPILER 553
13.6.1 Preprocessing
553
13.6.2 Lexical Analysis and Syntactic Parsing
553
13.6.3 Semantic Analysis, Compilation, and Optimization
554
13.6.4 Linking
555
13.6.5 Using gcc
557
13.7 SOFTWARE MAINTENANCE 558
13.7.1 Updating Software through rpm and yum
558
13.7.2 System Updating from the GUI
560
13.7.3 Software Documentation
561
13.7.4 Software Removal
561
xviii
◾
Contents
13.8 THE OPEN SOURCE MOVEMENT 562
13.8.1 Evolution of Open Source
562
13.8.2 Why Do People Participate in the Open Source Community?
565
13.9 CHAPTER REVIEW 566
REVIEW QUESTIONS 569
C
hapter
14
◾
m
aIntaInIng
and
t
rouBLeshootIng
L
Inux
571
14.1 INTRODUCTION 571
14.2 BACKUPS AND FILE SYSTEM INTEGRITY 572
14.2.1 Examining File System Usage
572
14.2.2 RAID for File System Integrity
573
14.2.3 Backup Strategies
576
14.3 TASK SCHEDULING 578
14.3.1 The at Program
579
14.3.2 The crontab Program
581
14.4 SYSTEM MONITORING 584
14.4.1 Liveness and Starvation
584
14.4.2 Fairness
587
14.4.3 Process System-Monitoring Tools
588
14.4.4 Memory System-Monitoring Tools
590
14.4.5 I/O System-Monitoring Tools
592
14.5 LOG FILES 594
14.5.1 syslogd Created Log Files
595
14.5.2 Audit Logs
598
14.5.3 Other Log Files of Note
601
14.5.4 Log File Rotation
602
14.6 DISASTER PLANNING AND RECOVERY 604
14.7 TROUBLESHOOTING 607
14.8 CHAPTER REVIEW 613
REVIEW QUESTIONS 616
BIBLIOGRAPHY, 621
APPENDIX: BINARY AND BOOLEAN LOGIC, 631
xix
Preface
L
ook around at the Unix/Linux textbook market and you find nearly all of the
books target people who are looking to acquire hands-on knowledge of Unix/Linux,
whether as a user or a system administrator. There are almost no books that serve as text-
books for an academic class. Why not? There are plenty of college courses that cover or
include Unix/Linux. We tend to see conceptual operating system (OS) texts which include
perhaps a chapter or two on Unix/Linux or Unix/Linux books that cover almost no OS
concepts. This book has been written in an attempt to merge the two concepts into a text-
book that can specifically serve a college course about Linux.
The topics could probably have been expanded to include more OS concepts, but at
some point we need to draw the line. Otherwise, this text could have exceeded 1000 pages!
Hopefully we have covered enough of the background OS concepts to satisfy all students,
teachers, and Linux users alike.
Another difference between this text and the typical Unix/Linux text is the breadth of
topics. The typical Unix/Linux book either presents an introduction to the OS for users or
an advanced look at the OS for system administrators. This book covers Linux from both
the user and the system administrator position. While it attempts to offer thorough cov-
erage of topics about Linux, it does not cover some of the more advanced administration
topics such as authentication servers (e.g., LDAP, Kerberos) or network security beyond
a firewall, nor does it cover advanced programming topics such as hacking open source
software.
Finally, this book differs from most because it is a textbook rather than a hands-on, how-
to book. The book is complete with review sections and problems, definitions, concepts and
when relevant, foundational material (such as an introduction to binary and Boolean logic,
an examination of OS kernels, the role of the CPU and memory hierarchy, etc.).
Additional material is available from the CRC Website: http://crcpress.com/product/
isbn/9781482235890.
xxi
Acknowledgments
and Contributions
F
irst, I am indebted to Randi Cohen and Stan Wakefield for their encouragement
and patience in my writing and completing this text. I would also like to thank Gary
Newell (who was going to be my coauthor) for his lack of involvement. If I was working
with Gary, we would still be writing this! I would like to thank my graduate student office-
mate from Ohio State, Peter Angeline, for getting me into Unix way back when and giving
me equal time on our Sun workstation.
I am indebted to the following people for feedback on earlier drafts of this textbook.
• Peter Bartoli, San Diego State University
• Michael Costanzo, University of California Santa Barbara
• Dr. Aleksander Malinowski, Bradley University
• Dr. Xiannong Meng, Bucknell University
• Two anonymous reviewers
I would like to thank the NKU (Northern Kentucky University) students from CIT 370
and CIT 371 who have given me feedback on my course notes, early drafts of this textbook,
and the labs that I have developed, and for asking me questions that I had to research
answers to so that I could learn more about Linux. I would like to specifically thank the
following students for feedback: Sohaib Albarade, Abdullah Saad Aljohani, Nasir Al Nasir,
Sean Butts, Kimberly Campbell, Travis Carney, Jacob Case, John Dailey, Joseph Driscoll,
Brenton Edwards, Ronald Elkins, Christopher Finke, David Fitzer, James Forbes, Adam
Foster, Joshua Frost, Andrew Garnett, Jason Guilkey, Brian Hicks, Ali Jaouhari, Matthew
Klaybor, Brendan Koopman, Richard Kwong, Mousa Lakshami, David Lewicki, Dustin
Mack, Mariah Mains, Adam Martin, Chris McMillan, Sean Mullins, Kyle Murphy, Laura
Nelson, Jared Reinecke, Jonathan Richardson, Joshua Ross, Travis Roth, Samuel Scheuer,
Todd Skaggs, Tyler Stewart, Matthew Stitch, Ayla Swieda, Dennis Vickers, Christopher
Witt, William Young, John Zalla, and Efeoghene Ziregbe.
xxii
◾
Acknowledgments and Contributions
I would like to thank Charlie Bowen, Chuck Frank, Wei Hao, Yi Hu, and Stuart Jaskowiak
for feedback and assistance. I would like to thank Scot Cunningham for teaching me about
network hardware.
I would also like to thank everyone in the open source community who contribute their
time and expertise to better all of our computing lives.
On a personal note, I would like to thank Cheri Klink for all of her love and support,
Vicki Uti for a great friendship, Russ Proctor for his ear whenever I need it, and Jim Hughes
and Ben Martz for many hours of engaging argumentation.
xxiii
How to Use This Textbook
T
his textbook is envisioned for a 1- or 2-semester course on Linux (or Unix). For a
1- semester course, the book can be used either as an introduction to Linux or as a sys-
tem administration course. If the text is used for a 1-semester junior or senior level course,
it could potentially cover both introduction and system administration. In this case, the
instructor should select the most important topics rather than attempting complete cover-
age. If using a 2-semester course, the text should be as for both introduction and system
administration.
The material in the text builds up so that each successive chapter relies, in part, on previ-
ously covered material. Because of this, it is important that the instructor follows the chap-
ters in order, in most cases. Below are flow charts to indicate the order that chapters should
or may be covered. There are three flow charts; one each for using this text as a 1-semester
introductory course, a 1-semester system administration course, and a 1-semester course
that covers both introduction and system administration. For a 2-semester sequence, use
the first two flow charts; one per semester. In the flow charts, chapters are abbreviated as
“ch.” Chapters appearing in brackets indicate optional material.
1-semester introductory course:
ch 1
ch 2
ch 3
ch 4
ch 5
ch 6
ch 7
ch 8
→
→
→
→
→
→
→
[appendix]
1-semester system administration course:
[
]
[
]
[
]
ch 5
ch 6
ch
ch 8
ch 9
ch 10
ch 11
ch 12
ch 1
7
→
→
→
→
→
→
→
[appendix]
33
ch 14
ch 15
→
→
1-semester combined course:
[ch 1]
→
appendix*
→
ch 2
→
ch 3
→
ch 4
→
ch 5*
→
ch 6*
→
ch 7
→
ch 8*
→
ch 9
→
ch 10
→
ch 11
→
ch 12
→
ch 13*
→
ch 14
xxiv
◾
How to Use This Textbook
As the 1-semester combined course will be highly compressed, it is advisable that chap-
ters denoted with an
asterisk (*) receive only partial coverage. For Chapter 5, it is recom-
mended that only vi be covered. For Chapter 6, it is recommended that the instructor skips
the more advanced material on
Do'stlaringiz bilan baham: |