How should computer science and technology be systematically taught by oneself?

Topics in Computer Science

Exploring the breadth of the field of computing helps us remember the main themes associated with computer science. Although "Seven Big Ideas of Computer Science" (Seven Big Ideas of Computer Science) was compiled after the tenth edition of this book, there are many similarities between these ideas and the themes that will be described in the subsequent chapters of this book. The "Seven Big Ideas" are simply Algorithms, Abstraction, Innovation, Data, Programming, Internet, and Influence. In the chapters that follow, we introduce a variety of topics, each covering the core ideas of the topic, current areas of research, and some of the techniques that have advanced knowledge in the field. Pay attention when we refer to these "big ideas" over and over again later on.

1 algorithm

Limited data storage capacity and the complex and time-consuming programming process limited the complexity of the algorithms used by early computing machines. But as these limitations were removed, the tasks that machines could perform grew larger and more complex. People try to use algorithms to express these tasks, but human intelligence alone cannot do it, so more and more research work turns to the research of algorithms and programming process.

It was against this backdrop that the theoretical work of mathematicians began to pay off. Thanks to Gödel's incompleteness theorem , mathematicians are already working on problems related to the algorithmic processes that advanced technologies are currently facing. From this, a new discipline called computer science was born.

Today, computer science has established itself as the science of algorithms. The science is broad and spans disciplines such as mathematics, engineering, psychology, biology, business management and linguistics. In fact, researchers who study different branches of computer science may define computer science very differently. For example, researchers in the field of computer architecture , who are primarily concerned with microcircuit technology , see computer science as the advancement and application of technology, but researchers in the field of database systems see computer science as the search for ways to improve information systems usefulness, while researchers in the field of artificial intelligence view computer science as the study of intelligence and intelligent behavior.

Still, the work of all these researchers touches on all aspects of algorithmic science. Given the central role that algorithms play in computer science (see Figure 0-5), it can be very beneficial to learn about algorithms by identifying focal problems.

〓● What problems can the algorithm process solve?

〓● How can we find the algorithm more easily?

〓● How to improve techniques for representing and communicating algorithms?

〓● How to analyze and compare the characteristics of different algorithms?

〓● How to use algorithms to manipulate information?

〓● How to apply algorithms to generate intelligent behavior?

〓● How does the application of algorithms affect society?

Figure 0-5 The centrality of algorithms in computer science

2 abstract

The term abstraction is used in this book to refer to the separation between an entity's external features and its internal constituent details. Abstractions allow us to ignore some of the internal details of complex devices (such as computers, cars, or microwave ovens) and use them as a single, understandable unit. Moreover, it is by means of abstraction that these complex systems can be designed and produced. Computers, cars, and microwave ovens are all built from components, where each component represents a level of abstraction at which the use of that component is independent of the details of the component's internal construction.

Using abstraction, we can construct, analyze and manage large and complex computer systems, but if we look at the problem at the level of details, we will not know the true face of Lushan. At each level of abstraction, we regard the system as consisting of components called abstract tools , ignoring the internal composition of these components. This allows us to focus on how each component interacts with other components at the same level, and how these components form a higher-level component as a whole. From this, we can understand the part of the system that is relevant to the task at hand without getting lost in a sea of ​​details.

It is important to emphasize that abstraction is not limited to the realm of science and technology. It is an important simplification technology, and any kind of life style formed by our society is inseparable from abstraction. Few people know how the various conveniences in everyday life are achieved: we need food and clothing, but we cannot produce them ourselves; we use electrical equipment and communication systems, but do not understand their underlying technology; we enjoy other people's services provided, but without knowledge of their professional details. For each new development, only a small fraction of society's members are dedicated to its realization, while others use the result of the realization as an abstract tool. In this way, society's storehouse of abstract tools expands, and its ability to develop further increases.

The topic of abstraction comes up repeatedly throughout this book. We will learn that computing devices are built through various levels of abstraction tools. We will also see that the development of large software systems is done in a modular fashion, where each module is an abstraction tool within a larger module. Moreover, abstraction has played an important role in the development of computer science itself, allowing researchers to focus on a specific scope within a complex field. In fact, the organization of the book reflects this characteristic of computer science: each chapter revolves around a specific aspect of computer science, and is often surprisingly independent of other chapters, but all of these chapters together form a provides a comprehensive overview of this vast field of research.

3 Innovation

While computers may simply be complex machines that mechanically execute mechanical algorithmic instructions, it should be seen that the field of computer science is an inherently innovative field. Discovering and applying new algorithms is a human activity that depends on our innate desire to use tools to solve problems in the world around us. Computer science has not only expanded representation across the visual, linguistic, and musical arts, but has also enabled new modes of digital representation to pervade the modern world.

Creating a large software system is less like following a recipe and more like conceiving a grand new sculpture. Conceiving the form and function of a sculpture requires careful planning. Manufacturing its components takes time, attention to detail, and skilled skill. The final product embodies the design aesthetic and the emotion of its creator.

4 data

Computers can represent any information that can be discretized or digitized. Algorithms can process or transform this digital representation of information in a dizzying variety of ways. So not only do computer algorithms shuffle one part of a computer's digital data with another, they allow us to search for patterns, create simulations, and generate new knowledge and insights through associative connections . Massive storage capacities, high-speed computer networks , and powerful computing tools have driven discoveries in science, engineering, and many other disciplines in the humanities. Whether predicting the therapeutic effect of a new drug by simulating complex protein folding, statistically analyzing the evolution of the language of digitized books across centuries, or rendering 3D images of internal organs obtained from non-invasive medical scans, data is driving With modern discoveries beyond the human capacity.

In this book, we explore a number of questions about data, including:

〓● How do computers store data related to common digital artifacts (such as numbers, texts, images, sounds, and videos)?

〓● How does the computer roughly estimate the data of those simulated artifacts in the real world?

〓● How do computers detect and avoid errors in data?

〓● What will the digital universe of ever-increasing, interconnected data at our disposal be like in the end?

5 program design

Although the languages ​​and tools available today bear little resemblance to the programmable computers of the 1950s and early 1960s, the act of translating human intent into executable computer algorithms is now widely known as For programming/programming. Although computer science is not only computer programming but includes many other aspects, the ability to solve problems by designing executable algorithms (programs) remains an essential skill for all computer scientists.

Computer hardware can only perform relatively simple algorithmic steps, but with the abstraction provided by computer programming languages, humans can reason about and develop coded solutions to much more complex problems. The following key questions provide the framework for our discussion on this topic.

〓● How to build the program?

〓● What types of errors will occur in the program?

〓● How to find and fix bugs in the program?

〓● What are the effects of errors in modern programs?

〓● How to document and evaluate the program?

6 Internet

The Internet connects computers and electronic devices around the world, which has profoundly affected the way our technological society stores, retrieves and shares information. Today, commerce, news, entertainment, and communications increasingly rely on this interconnected network of smaller computer networks. Our discussion goes beyond describing the mechanics of the Internet as an artifact, but touches on many aspects of human society that have been woven together by global networks.

Internet coverage also has a profound impact on our privacy and the security of our personal information. There are many dangers in cyberspace, so cryptography and cybersecurity are becoming increasingly important in our interconnected world.

7 impact

Computer science has a profound impact not only on the technologies we use to communicate, work, and play, but also on our social lives. Advances in computer science are downplaying many of the distinctions by which we used to base certain decisions; advances in computer science are also challenging many long-held social norms. Legally, it raises certain questions - the extent of intellectual property and the rights and obligations that accompany this ownership. Morally, people are faced with many choices that challenge traditional social norms of conduct. For the government, there have been many controversies—to what extent should computer technology and its applications be regulated? Philosophically, people began to argue about the existence of intelligent behavior versus the existence of intelligence itself. At the same time, society as a whole is debating whether new computer applications represent new freedoms or new controls.

This topic is important for those who want to get into computing or computer-related fields. New discoveries in science sometimes make many applications controversial, which creates great dissatisfaction with the researchers involved. Furthermore, moral wrongdoing can destroy an otherwise successful business.

The development of computer technology has raised many problems for people, and the ability to solve these problems is also very important for people in non-computer fields. Indeed, computer technology has spread so rapidly throughout society that almost no one is unaffected by it.

This book provides some technical background to help people deal with problems arising from computer science with a kind of rational thinking. However, technical knowledge of computer science alone cannot provide solutions to all problems. Accordingly, several chapters of the book are devoted to the social, ethical, and legal implications of computer science, including security issues, issues of software ownership and obligations, the social impact of database technologies, and the consequences of developments in artificial intelligence.

Furthermore, there is often no clear right answer to a problem, and many effective solutions are a compromise between two opposing (perhaps both valid) perspectives. Finding solutions in these situations often requires the ability to listen, discern other perspectives, engage in rational discussions, and change one's perspective as new insights are gained. Therefore, each chapter of this book ends with a collection of questions in a section called "Social Issues," which examines a range of relationships between computer science and society. These questions are not necessarily to be answered, but to be thought about. In many cases, when people find other answers, they are no longer satisfied with the obvious answer that came first. In short, the purpose of these questions is not to get people to the "right" answer, but to raise awareness that there are multiple stakeholders involved in a problem and that there are multiple solutions to a problem , those solutions have both long and short term effects.

Philosophers have developed many approaches to ethics in the study of fundamental theory , resulting in principles that guide decision-making and behavior.

The ethics of character (sometimes called the ethics of virtue) was developed by Plato and Aristotle , who argued that "good conduct" is not the result of the application of identifiable rules, but a natural consequence of "good character." Yet other ethical foundations (such as the ethics of results, the ethics of duty, and the ethics of contract) suggest that one should consider, when addressing ethical dilemmas, "What are the consequences?" "What are my duties?" or "What contract do I have?" ?” And character ethics considers: “What kind of person do I want to be?” Therefore, good behavior is based on good character, which usually benefits from good education and virtuous habits.

When teaching ethics to professionals in different fields, it is generally based on character ethics. It is not necessary to teach specific ethical theories, but to give some cases that expose various ethical problems in this professional field. Then, by discussing the pros and cons of these cases, these professionals gain a clearer, deeper, and more sensitive awareness of the potential dangers of professional life, and build this awareness into their character. This is the spirit of designing social issues at the end of each chapter.

Recommend a classic computer science textbook: "Introduction to Computer Science" (13th edition)

This book is an introductory textbook for computer science. While striving to maintain disciplinary breadth, depth is also given to give a pertinent assessment of the topics covered.

The 13th edition continues to use the Python code examples and Python-like pseudocode introduced in the 12th edition. We made this change for several reasons. First, the book already contains quite a bit of code in various languages, and several chapters have detailed pseudocode. Second, the reader has absorbed quite a bit of syntactical knowledge, and it seems possible to reorient syntax into language that you will actually see in subsequent courses. Finally, and more importantly, a growing number of instructors who use this book conclude that even with a priority introduction to the breadth of computing, many topics will be difficult for students to grasp without the programming tools for exploration and experimentation.

So why choose Python? The choice of language is always a contentious issue, and there are at least as many people opposed to any choice as there are for it. Python is an excellent intermediate choice because Python:

〓● Syntax is concise and easy to learn;

〓● I/O primitives are simple;

〓● data types and control structures are very close to the pseudo-code primitives used in previous versions;

〓● Support multiple programming paradigms.

Python is a mature programming language with a vibrant development community and rich online resources for further research. By some measures, Python remains one of the top 5 most-used programming languages ​​in the industry, and its use in introductory computer science courses has increased dramatically. It is an extremely popular introductory course for non-computing students, and has been widely accepted by other STEM [1] fields like physics and biology as the language of choice for computational science applications.

chapter arrangement

The topics in this book are advanced step by step from concrete to abstract—this is a very teaching order, and each topic naturally leads to the next topic. First introduce the basic principles of information encoding, data storage, and computer architecture (chapters 1 and 2), then study operating systems (chapter 3) and computer networks (chapter 4), and discuss algorithms, programming languages, and software development (Chapters 5–7), exploring how to better access information (Chapters 8 and 9), and considering some important applications of computer graphics techniques (Chapter 10) and artificial intelligence (Chapter 11) , and finally an introduction to abstract theory of computation (Chapter 12).

Although the sequence of the book is naturally coherent, each chapter is highly independent and can be read independently or rearranged according to different learning sequences. In fact, this book is often used as a textbook for a variety of courses, and the order in which the content is selected is varied. One way of teaching is to introduce Chapters 5 and 6 (Algorithms and Programming Languages) first, and then return to the corresponding previous chapters as needed. I also know of a course that starts with chapter 12 on computability. This book has also served as the basis for in-depth projects in different fields and has been used as a textbook for the "Seminar" course. For students who do not need to know too much technology, you can focus on Chapter 4 (Network and Internet), Chapter 9 (Database System), Chapter 10 (Computer Graphics) and Chapter 11 (Artificial Intelligence) in teaching. ).

Optional chapters are marked with an asterisk at the beginning of each chapter. These elective chapters either discuss more specialized topics or delve into traditional topics in depth. This is just a suggestion for readers who want to read in a different order. Of course, there are other readings. Especially for those readers looking for a quick read, we recommend the following reading order.

chapter theme
1.1~1.4 Data Encoding and Storage Basics
2.1~2.3 Machine Architecture and Machine Language
3.1~3.3 operating system
4.1~4.3 Networking and Internet
5.1~5.4 Algorithms and Algorithm Design
6.1~6.4 programming language
7.1~7.2 software engineering
8.1~8.3 data abstraction
9.1~9.2 Database systems
10.1~10.2 Computer Graphics
11.1~11.3 12.1~12.2 Computational Theory of Artificial Intelligence

There are several main threads running through this book. One of the main threads for computer science is constant development and change. The book iterates on each theme from a historical perspective, discusses its current status, and points out directions for research. Another thread is the role of abstraction and the ways in which complexity can be controlled with abstraction tools. This main line is introduced in Chapter 0, and then repeatedly reflected in operating system architecture, networking, algorithm development, programming language design, software engineering, data organization, and computer graphics.

Guess you like

Origin blog.csdn.net/epubit17/article/details/129744726