๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

Introduction to Computing Systems and Programming in Python

โœ Scribed by Shafiei, Amir Keivan


Publisher
Independently Published
Year
2023
Tongue
English
Leaves
255
Category
Library

โฌ‡  Acquire This Volume

No coin nor oath required. For personal study only.

โœฆ Synopsis


Welcome to Introduction to Computing Systems and Programming in Python! This book is designed to provide a comprehensive introduction to computing systems and programming using Python, a popular and versatile programming language.
Whether you are a beginner or have some prior programming experience, this book is a great starting point to learn the fundamentals of computer systems and programming. We will cover the basic principles of programming, including data types, control structures, functions, and object-oriented programming. Additionally, we will delve into more advanced topics such as data structures, algorithms, and file input/output.
Throughout the book, we will use Python to illustrate these concepts and provide hands-on experience with programming. You will learn how to write Python programs, debug errors, and test your code. By the end of the book, you will have gained a solid foundation in programming and be able to apply these skills to a wide range of computing systems.

โœฆ Table of Contents


ACKNOWLEDGMENTS i

1 Introduction 1

1.1 What are Computing Systems and Programming? 1

1.2 Why Python? 2

1.3 Book Structure 3

1.4 Conclusion 7

2 Binary Representation 8

2.1 The Binary Number System 9

2.2 Binary Arithmetic 12

2.3 Binary to Decimal Conversion 13

2.4 Decimal to Binary Conversion 14

2.5 Conclusion 16

2.6 Exercise 17

3 Data Representation 18

3.1 Signed Numbers 20

3.2 Floating-Point Numbers 21

3.3 ASCII Encoding 23

3.5 Conclusion 28

3.6 Exercise 28

4 Computer Architecture 30

4.1 The Central Processing Unit (CPU) 32

4.2 Memory 33

4.3 Input/Output (I/O) 35

4.4 Machine Language 37

4.5 Instruction Set Architecture (ISA) 38

4.6 Boot Process 39

4.7 Conclusion 41

4.8 Exersises 42

5 Logical Digital Structures 44

5.1 Logic Gates 45

5.3 Digital Circuits 49

5.4 Combinational Circuits 50

5.6 Exercises: 53

6 The Foundational Von Neumann Architecture 55

6.1 CPU, Memory, and I/O Devices 57

6.2 Fetch-Decode-Execute Cycle 59

6.3 Instruction Set 61

6.4 Pipeline 62

6.5 Conclusion 63

6.6 Exercises 64

7 Introduction to Programming 65

7.1 Python Environment Setup 66

7.2 Basic Syntax 66

7.3 Variables and Data Types 68

7.3.1 Numeric 69

7.3.2 Sequence 71

7.3.3 Text 72

7.3.3 Mapping 73

7.3.4 Set 75

7.3.5 Precedence of operators 78

7.4 First Program in Python 80

4.4.1 User Input 81

7.5 Conclusion 82

7.5 Exercises 83

8 The Art of Control Structures 84

8.1 Conditional Statements: 85

8.2 Looping Statements: 86

8.4 Nested Loops: 91

8.5 Conclusion 92

8.6 Exercises 93

9 Functions 95

9.1 Defining and Calling Functions 95

9.2 Function Parameters 97

9.3 Calling Functions 98

9.4 Return Statements 99

9.5 Default Parameters 101

9.6 Variable Scope 102

9.7 Recursive Functions 104

9.8 Lambda Functions 107

9.9 Conclusion 109

9.10 Exercises 109

10 Pointers and Arrays in Python 111

10.1 Understanding Pointers and Arrays in Python 111

10.2 Working with Pointers in Python 112

10.3 Creating and Using Arrays 115

10.4 Multidimensional Arrays in Python 116

10.5 Pointers and Arrays in Functions 117

10.6 Array slicing 119

10.7 Arrays in NumPy 120

10.7.1 Creating NumPy Arrays 121

10.7.2 Indexing and Slicing NumPy Arrays 123

10.7.3 Operations on NumPy Arrays 123

10.8 Conclusion 126

10.9 Exercises 127

11 Troubleshooting 128

11.1 Introduction 128

11.1.1 The importance of troubleshooting in programming 128

11.1.2 Common types of errors 129

11.2 Debugging Tools: 130

11.2.1 Print Statements 131

11.2.2 Breakpoints 132

11.2.3 IDE Debuggers 132

11.2.4 Traceback Module 135

11.3 Debugging Strategies 136

11.4 Handling Exceptions 139

11.4.1 try-except blocks 140

11.4.2 Handling specific exceptions 141

11.4.3 Raising exceptions 141

11.5 Conclusion 142

11.6 Exercise 142

12 Input and Output 143

12.1 Standard Input and Output 143

12.1.1 The print() Function 145

12.1.2 The input() Function 146

12.2 File Input and Output 147

12.2.1 Opening and Closing Files 148

12.2.2 Writing to Files 150

12.2.3 Reading from Files 152

12.2.4 File Modes 154

12.4 Working with Directories 156

Creating a Directory 156

Removing a Directory 157

Listing the Contents of a Directory 157

Changing the Current Working Directory 157

Checking if a Directory Exists 158

12.5 Understanding CSV and JSON File Formats 159

12.5 Conclusion 160

12.6 Exercises 161

13 Linked Lists 163

13.1 Introduction to Linked Lists 163

13.2 Singly Linked Lists 165

13.3 Doubly Linked Lists 168

13.4 Circular Linked Lists 171

13.4.1 Circular Singly Linked Lists 172

13.4.2 Circular Doubly Linked Lists 173

13.5 Applications of Linked Lists 175

13.5.1 Dynamic Memory Allocation: 175

13.5.2 Implementation of Stacks and Queues: 176

13.5.3 Sparse Matrix: 176

13.5.4 Image Compression: 176

13.5.5 Polynomial Manipulation: 177

13.7 Conclusion 177

13.8 Exercises 178

14 Algorithms 179

14.1 Introduction to Algorithms 179

14.1.1 Characteristics of Good Algorithms 181

14.1.2 Algorithm Analysis 182

14.2 Sorting Algorithms 183

14.2.1 Bubble Sort 183

14.2.2 Selection Sort 185

14.2.3 Insertion Sort 187

14.2.4 Merge Sort 189

14.2.5 Quick Sort 192

14.2.6 Heap Sort 193

14.3 Searching Algorithms 195

14.3.1 Linear Search 195

14.3.2 Binary Search 196

14.3.3 Interpolation Search 197

14.4 Graph Algorithms 199

14.4.1 Breadth-First Search 199

14.4.2 Depth-First Search 203

14.4.3 Dijkstra's Algorithm 204

14.4.4 Bellman-Ford Algorithm 207

14.5 Dynamic Programming 210

14.5.1 What is Dynamic Programming? 210

14.5.2 Fibonacci Sequence 211

14.5.3 Longest Common Subsequence 212

14.5.4 Knapsack Problem 215

14.6 Conclusion 217

14.7 Exercises 218

15 Compiler and Assembler and Interpreter 220

15.1 Introduction to Compiler, Assembler, and Interpreter 220

15.2 Compiler 221

15.2.1 How does a Compiler work? 222

15.2.2 Advantages and Disadvantages of Compilers 223

15.2.3 Examples of Compilers 224

15.3 Assembler 224

15.3.1 How does an Assembler work? 225

15.3.2 Types of Assemblers 225

15.3.3 Advantages and Disadvantages of Assemblersโ€‹226

15.3.4 Examples of Assemblers 227

15.4 Interpreter 227

15.4.1 How does an Interpreter work? 227

15.4.2 Advantages and Disadvantages of Interpretation 228

15.5 Comparison of Compiler, Assembler, and Interpreter 229

15.5.1 Speed and Efficiency 229

15.5.2 Portability 230

15.5.3 Debugging 230

15.5.4 Summary 231

15.6 Conclusion 231

15.7 Exercises 232

16 Conclusion 234

16.1 Recap of the Book's Main Topics and Themes 234

16.2 Reflection on the Importance of Computer Science in Modern Society 235

16.3 Future Trends and Challenges in Computer Scienceโ€‹236

Appendix A Python Built-In Functions 239

Appendix B Glossary of Terms 257

Appendix C Further Reading 260


๐Ÿ“œ SIMILAR VOLUMES


Introduction to Computing and Programmin
โœ Mark J. Guzdial, Barbara Ericson ๐Ÿ“‚ Library ๐Ÿ“… 2016 ๐Ÿ› Pearson ๐ŸŒ English

For courses in Computer Programming with Python.<br><br>This package includes MyProgrammingLabยฎ<br><br>Social Computing and Programming with Python<br><br>Introduction to Computing and Programming in Python is a uniquely researched and up-to-date volume that is widely recognized for its successful i

Explorations in Computing: An Introducti
โœ John S. Conery ๐Ÿ“‚ Library ๐Ÿ“… 2014 ๐Ÿ› CRC Press ๐ŸŒ English

<em>An Active Learning Approach to Teaching the Main Ideas in Computing </em><strong>Explorations in Computing: An Introduction to Computer Science and Python Programming</strong> teaches computer science students how to use programming skills to explore fundamental concepts and computational appro

Explorations in Computing: An Introducti
โœ Conery, John S ๐Ÿ“‚ Library ๐Ÿ“… 2014 ๐Ÿ› CRC Press ๐ŸŒ English

"This text helps beginners develop their own Python programs. Experiments with fully completed programs are provided at the beginning of each chapter, allowing instructors to use the text in CS0 courses where students do not learn programming. Programming projects appear later in each chapter. Stude

Introduction to Computation and Programm
โœ John V. Guttag ๐Ÿ“‚ Library ๐Ÿ“… 2013 ๐Ÿ› MIT Press ๐ŸŒ English

This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including so

Introduction to Computation and Programm
โœ John V. Guttag ๐Ÿ“‚ Library ๐Ÿ“… 2021 ๐Ÿ› The MIT Press ๐ŸŒ English

This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including numpy, matplotlib, random, pandas, and sklearn. It provides students with skills that will enable them to make productive use