PREFACE\t1
1INTRODUCTION1
1.1WHAT IS COMPUTER SCIENCE?1
1.2VON NEUMANN MODEL1
1.3COMPUTER COMPONENTS2
1.4HISTORY AND DEVELOPMENT TRENDS3
1.5FRONTIERS OF COMPUTER TECHNOLOGY5
1.6MAJOR FIELDS OF COMPUTER SCIENCE13
1.7REFERENCES AND RECOMMENDED READINGS14
1.8SUMMARY14
1.9PRACTICE SET15
2NUMBER SYSTEMS AND CONVERSIONS16
2.1INTRODUCTION16
2.2POSITIONAL NUMBER SYSTEMS17
2.3NON-POSITIONAL NUMBER SYSTEMS28
2.4REFERENCES AND RECOMMENDED READINGS29
2.5SUMMARY29
2.6PRACTICE SET30
3DATA STORAGE AND COMPRESSION32
3.1BIT PATTERN32
3.2INTEGER IN COMPUTER33
3.3FLOATING-POINT IN COMPUTER36
3.4DATA STORAGE39
3.5CLOUD STORAGE AND BIG DATA STORAGE50
3.6REFERENCES AND RECOMMENDED READINGS54
3.7SUMMARY55
3.8PRACTICE SET56
4DATA OPERATIONS59
4.1LOGICAL OPERATIONS59
4.2ARITHMETIC OPERATIONS66
4.3SHIFT OPERATIONS71
4.4REFERENCES AND RECOMMENDED READINGS74
4.5SUMMARY74
4.6PRACTICE SET75
5COMPUTER COMPONENTS78
5.1THREE MAIN COMPONENTS78
5.2COMPONENTS INTERCONNECTION89
5.3MACHINE CYCLE90
5.4COMPUTER ARCHITECTURES91
5.5REFERENCES AND RECOMMENDED READINGS92
5.6SUMMARY93
5.7PRACTICE SET94
6COMPUTER NETWORKS96
6.1TYPES OF NETWORKS96
6.2TCP/IP MODEL99
6.3DEVICES IN NETWORKS103
6.4NEW DEVELOPMENT IN NETWORKS105
6.5REFERENCES AND RECOMMENDED READINGS113
6.6SUMMARY113
6.7PRACTICE SET115
7OPERATING SYSTEMS117
7.1CATEGORIES117
7.2COMPONENTS119
7.3POPULAR OPERATING SYSTEMS127
7.4REFERENCES AND RECOMMENDED READINGS131
7.5SUMMARY131
7.6PRACTICE SET132
8ALGORITHM135
8.1WHAT IS ALGORITHM?135
8.2THREE CONSTRUCTS136
8.3HOW TO EVALUATE ALGORITHMS137
8.4ALGORITHM REPRESENTATION138
8.5BASIC ALGORITHMS139
8.6CLASSIFICATION OF ALGORITHM148
8.7REFERENCES AND RECOMMENDED READINGS152
8.8SUMMARY152
8.9PRACTICE SET153
9PROGRAMMING LANGUAGES155
9.1DEVELOPMENT155
9.2PROGRAM TRANSLATION157
9.3LANGUAGES’ LATEST RANKING, CATEGORIES AND FEATURES158
9.4COMMON CONCEPTS OF PROGRAMMING LANGUAGES164
9.5SEVERE SOFTWARE ERRORS166
9.6REFERENCES AND RECOMMENDED READINGS169
9.7SUMMARY170
9.8PRACTICE SET170
10SOFTWARE ENGINEERING172
10.1INTRODUCTION172
10.2SOFTWARE DEVELOPMENT LIFE CYCLE173
10.3SOFTWARE DEVELOPMENT MODELS179
10.4CMMI AND SOFTWARE PROCESS MANAGEMENT182
10.5IMPORTANCE OF DOCUMENTATION184
10.6SERVICE-ORIENTED ARCHITECTURE185
10.7REFERENCES AND RECOMMENDED READINGS185
10.8SUMMARY186
10.9PRACTICE SET187
11DATA AND FILE STRUCTURES188
11.1ABSTRACT DATA TYPES188
11.2LIST189
11.3STACK192
11.4QUEUE192
11.5TREE AND GRAPH193
11.6FILE STRUCTURE197
11.7REFERENCES AND RECOMMENDED READINGS200
11.8SUMMARY201
11.9PRACTICE SET201
12DATABASES203
12.1INTRODUCTION203
12.2DATABASE MANAGEMENT SYSTEMS205
12.3DATABASE ARCHITECTURE205
12.4THE HISTORY OF DATABASE SYSTEMS206
12.5DATABASE MODEL208
12.6RELATIONAL OPERATIONS213
12.7DATABASES FOR BIG DATA214
12.8REFERENCES AND RECOMMENDED READINGS215
12.9SUMMARY216
12.10PRACTICE SET217
13SECURITY219
13.1SECURITY GOALS219
13.2SECURITY THREATS220
13.3SECURITY SERVICES225
13.4CRYPTOGRAPHY230
13.5REFERENCES AND RECOMMENDED READINGS234
13.6SUMMARY235
13.7PRACTICE SET237
14THEORY OF COMPUTATION239
14.1THE TURING MACHINE239
14.2HALTING PROBLEM244
14.3SOLVABLE PROBLEMS246
14.4REFERENCES AND RECOMMENDED READINGS248
14.5SUMMARY248
14.6PRACTICE SET248
15ARTIFICIAL INTELLIGENCE250
15.1INTRODUCTION250
15.2KNOWLEDGE REPRESENTATION AND EXPERT SYSTEMS251
15.3PERCEPTION253
15.4REASONING262
15.5NATURE INSPIRED COMPUTATION266
15.6REFERENCES AND RECOMMENDED READINGS271
15.7SUMMARY272
15.8PRACTICE SET273
16INTERNET OF THINGS, CLOUD COMPUTING AND DATA SCIENCE274
16.1INTRODUCTION274
16.2OPPORTUNITIES IN IOT, CLOUD, AND DATA SCIENCE279
16.3CHALLENGES AND RESEARCH DIRECTIONS281
16.4IOT APPLICATIONS284
16.5CLOUD APPLICATION SERVICE MODELS286
16.6CLOUD APPLICATION DEPLOYMENT MODELS287
16.7BIG DATA TOOLS AND TECHNIQUES287
16.8INTEGRATION OF IOT, CLOUD COMPUTING, AND BIG DATA289
16.9REFERENCES AND RECOMMENDED READINGS291
16.10SUMMARY291
16.11PRACTICE SET292