In this blog post, I'd like to talk to you about my understanding of computer science. The current undergraduate stage of computer science teaching involves all aspects of computer science, the classification of complex, sometimes may make the new people confused. So, what is the most important thing for a computer science scholar? I believe that 1000 readers, 1000 Hamlet, the same, every computer learners have their own knowledge of the profession. If the undergraduate four years of computer Science course is the horizontal accumulation of professional knowledge, then grasp the essence of computer science content needs vertical thinking. Therefore, my personal opinion is: the understanding of the whole concept of computer system is especially important in the study of the professional computers. So I summed up my understanding and understanding of the professional, I hope to understand this aspect of the reader to help, of course, also welcome you to put forward their views and suggestions.
Speaking of computers, generally according to the software and hardware two general direction of consideration. Indeed, if the hardware is the basis of the computer, then the software is naturally the superstructure of the computer. We also discuss this in this category. But I myself inserted the third classification-the basic discipline, we all know that computer science is the extension of mathematics, mathematics theory in the position of the computer science does not have to say much.
First, the hardware
First of all, let's talk about computer hardware knowledge. We all know that traditional computers are von Neumann structure, that is, to satisfy the principle of stored procedures. This also happens to reflect the two most important aspects of computer hardware-compute and storage, the corresponding hardware is CPU and memory. The CPU is responsible for the operation and control of the code, and the memory is responsible for storing the computer program data and code. Other parts of the computer, such as disks, mice, keyboards, network cards, and so on, are all peripheral parts of the computer.
As the core--cpu of a computer, there are three key parts: an operator, a controller, and a register. Arithmetic, logic and other operations are responsible for the calculation of the soul of computer computing, the controller is responsible for controlling the execution of code instructions, generally including extraction, decoding, execution, writeback four large steps, and registers for the cache computing data (General Register) and control data (instruction register, program counter). However, this is actually the logic of the CPU classification, the actual work by the CPU within the corresponding operation circuit, control circuit and other integrated circuits completed.
The core storage parts of a computer are logically divided into two categories: memory and cache. In physics, however, the current mainstream CPU generally integrates the cache into the CPU. Memory typically uses DRAM storage components, which are highly integrated and inexpensive, but slower. The cache typically uses SRAM storage, which, contrary to DRAM, is less integrated and expensive, but faster than DRAM, so it is used to cache temporary data between the CPU and memory, increasing the access efficiency of memory data.
The most relevant courses in computer science and above are divided into two major categories. One is the electronic technology class, the other is the composition and the architecture class.
"Circuit analysis" is the theoretical basis of electronic technology, which provides the theory and method of electronic circuit characteristic analysis. and the computer related to the highest degree of electronic technology courses are "mold" and "digital power". The amplification characteristic of the transistor is often used to realize the function of the signal processing and amplifying circuit of the peripheral parts of the computer. However, the logic characteristic of the transistor is that it is the cornerstone of the computer binary system, which provides logic circuit, integrated circuit, digital logic and other related theories. Provides a theoretical basis for the construction of CPUs and memory.
In the course of composition and architecture class, the principle of computer composition provides the construction principle of CPU, memory, IO and other computer subsystems, especially the instruction system, which is the first abstraction of computer hardware and the foundation of software accessing computer hardware. "Computer Architecture" and the composition of the principle of a different angle of view, if the composition of the principle of emphasis on the computer every detail, then the architecture is from a macro point of view to describe the design and architecture of computers. However, they are closely tied to the hardware of the computer, such as instruction flow and other content related to the design of CPU-specific functional components, so here they are classified as a category.
The above is the undergraduate computer course and computer hardware-related courses, I do not know whether you and I have the same feeling, the undergraduate computer course in the hardware part of the content only occupy a small part of the entire professional curriculum, more space left to the software part (of course, this and the different colleges and universities teaching plans related).
Second, the software
For the software direction of the computer, we talk from three angles: the bottom, the system and the application.
The software's underlying direction mainly introduces the direct manipulation of computer hardware, and the instruction system is the first abstraction of computer hardware. Therefore, the underlying programming is the use of this abstraction, indirect control of the work of computers, the most important of which is assembly language.
In the "assembly language" course, the assembly is generally described as a mnemonic of computer instruction. In fact, we can also find this layer of relationship, such as the two most critical aspects of assembly language: instruction and register is a direct abstraction of the internal structure of the CPU. The contents of the arithmetic operation instruction and the logic operation instruction in the assembly instruction correspond to the function of the CPU's Operation circuit, and the entire assembly instruction is executed by the control circuit of the CPU. Similarly, most of the registers in the CPU can be accessed directly in assembly language, and the memory data is represented in the assembly language in the form of memory address access.
If the assembler provides an abstract level of universal access to computer hardware, the interface technology course will focus on how to use the assembler to provide detailed access to the computer's peripherals, which gives specific information and methods for controlling the peripherals.
And the real comprehensive use of the knowledge of the computer access to the content of the "SCM principle" in the curriculum embodied more clearly. Although SCM is only a micro computer system, but it is "small, perfectly formed", the use of single-chip microcomputer to provide control of the single-chip microcomputer is not only to consider the microcontroller core chip design structure and interface resources, but also to consider the microcontroller's external device control and access details.
Although the above-mentioned courses provide basically a low level of overall control of the computer, there is much more to it than that. Because the original assembly programming is difficult to meet the dynamic scheduling of computer resources, give full play to the performance of the computer. For example, the dynamic application and release of memory, such as IO task waiting, let the CPU to calculate other tasks and so on. These requirements require people to provide a program that is responsible for resource management to help complete, which results in an operating system. In addition, when faced with a lot of assembly language programming work, people need more efficient way to interact with the computer, so high-level language was born. The task of translating the high-level language into the bottom assembly falls on the compiler.
The operating system principles course details the management of the CPU, memory, device, and disk of the operating system, and these theories are only put into practice, with more relevant courses. Similar courses, such as Windows Programming and Linux environment programming, provide a way to familiarize yourself with operating system principles and operating system APIs (system calls), and the embedded curriculum will take this exercise a step closer, with cross-compiling, kernel-clipping learning to understand the details of the operating system's kernel. And the Real clear understanding of the details of the operating system is through the "kernel Source code analysis," Such a course, through the core source of the interpretation of the developer's perspective to learn the operating system. In addition, the security of the operating system of the "computer security" course from another unconventional mode of thinking to the operating system, the indirect operation of hardware manipulation, and then manipulate the computer. Learning from the learning of viruses, trojans, worms, and loopholes, in turn, further deepens the understanding of the operating system.
The course of compiling principles describes the computer's control-programming language-from another perspective. Compared to the operating system as a Computer Management program, the compiler is the form of the conversion program appears. While it is true that the control logic provided by the application is actually performed on the computer, the operating system uses the resources of the computer to fully utilize the established control logic, while the compiler translates the control logic provided by the application to the bottom of the computer, which includes the translation and optimization of the code. The translation of code is not a simple direct mapping, as the complexity of the high-level language changes, the compiler will be difficult to analyze the work, and "formal language and automata" provides a theoretical basis for code analysis.
As mentioned earlier, the operating system and compiler are not the real work of the computer. The real use of computers to serve people is the functionality that applications provide, and the value that applications play on the computer. However, the application is built on the operating system, because the operating system is an abstraction of the computer system.
I have divided the computer application of the course of the above six aspects (very likely incomplete, welcome to add the proposal), we first from the computer application of the most core tools-programming language.
Everyone learns a variety of programming languages, and the programming languages that everyone is good at are probably different. I am a C + + enthusiast, so use C + + as an example of discussion. C + + is a multi-paradigm programming language, process-oriented, object-based, object-oriented, generic programming, functional programming, and so on. Each programming has its own characteristics and advantages, but everyone who learns the programming language has their own choices and hobbies. "C + + program design" should be a required course of computer science, but as long as the language of programming, you can not get rid of the data structure and algorithm. Different programming languages support libraries for data structures and algorithms, which are the cornerstone of programming languages. Both non-visual programming and visual programming (MFC, QT) are inseparable from data structure and algorithm support. Java also has the same characteristics as another mainstream (currently the most widely used) programming language. Whether it's Java programming, Basic Java Desktop programming, or Java Web Programming, which provides more space for learning. From Javase, Java ee to ssh, Android, and Hadoop, you can see the ever-changing application of programming language constructs.
Computer graphics are the core of computer program visualization. "Computer Graphics" describes the basic graphics display and transformation algorithm, three-dimensional environment of the construction methods, including cameras, light search, shadow, arts and sciences, mapping, particle systems and so on. and "Computer graphics image Processing" More emphasis on image acquisition and processing, "multimedia technology" is similar. They are applications in specific fields, using a large number of mathematical theories, and it is they that make the world of computers colorful.
Data processing Direction course is the computer behind the wordless hero, whether it is the cliché of "artificial intelligence", "Data Warehouse", "Data mining", or at present, the "machine learning", "Big Data processing", we can not directly see these courses on the screen figure. However, these courses describe how computers think about problems, how to deal with computer data better and faster, and to meet people's practical needs. These courses are still supported by mathematical theory and information theory.
No matter what application is implemented, the theory support of software design becomes more and more important when the software reaches large enough. "Software Engineering" provides a model and related theories for the development process, and "object-oriented methodology" focuses on the field of object-oriented design. Students in the Times feel that these theories are too far away, only through the experience of large-scale multi-person cooperation projects, can deeply understand the predecessors left behind these precious wealth of experience.
Here the "computer network" divided into software application is actually slightly inappropriate. Computer network is a collection of interconnected computers, it has its own hardware and software. However, from the point of view of operating system support, the network protocol and communication are built on the system. This is not really important, it is important that the computer network changes the world of computers, the original isolated computer linked to form a new computer world-the network environment. "TCP/IP Protocol Analysis" describes in detail the implementation of computer network principles, "Cisco Network Technology" Let us learn how to control every device in the computer, from a separate computer to the gateway, from the LAN to the Internet.
Of course, speaking of computer networks, you can not talk about network programming, and these programming interfaces are provided by the operating system interface. The network protocol itself is a large-scale algorithm, it has thousands of Internet programs distributed composition. And the program can not avoid defects and bugs, this for network security bought a "curse". How to take advantage of the functions provided by the system and existing computer applications and policies to prevent network security has also become a topic of research.
The birth of the database discipline is also derived from the actual needs of people. Of course, when the information retrieval of machinery does not meet the actual needs, people think of using better data structure to store the organization. As for the management of the disk data, the data management method of the database becomes more and more important when the file system can't meet the requirement of frequent fast query. Database disciplines describe relational models of data, Structured Query language SQL, and how to design databases when combined with applications. Traditional database is built on the operating system of the file system, of course, this does not consider the form of memory database, they have their own characteristics of the internal implementation form, such as B + Tree. There are a wide variety of databases, with SQL Server for small and medium-sized applications, Oracle for large applications, open source MySQL, and SQLite on Android embedded devices. In addition, the database is also the data source form of traditional data mining, machine learning and artificial intelligence algorithm.
It will deepen the understanding of computer system through the study of different computer application disciplines, and the knowledge, theory and algorithm of mastering different disciplines ' own fields. such as an application how to design, how to provide a user interface, how to translate into machine language, how to run on the computer hardware, until the application is running to change the computer hardware of each gate circuit status.
III. Basic Disciplines
We often neglect the significance of non-professional disciplines when we are learning professional knowledge. Drink from, if not a strong foundation of fundamental disciplines, is unable to build a computer world of diverse.
The computer is an extension of mathematics, as mentioned in the front. Mathematical theory constructs the cornerstone of computer science. The importance of "higher mathematics" does not need to be said, the calculus, infinite series, Fourier transform and so on in the computer hardware circuit, image processing algorithm, relationship theory and other fields everywhere. "Discrete Mathematics" graph theory, Mathematical logic theory is embodied in all aspects of the computer, whether it is the hardware logic gate design, the NP problem of the algorithm or operating system task scheduling, compiling optimization, etc., provide theoretical support. "Linear algebra" in the graphics of the performance is particularly prominent, the shape of the transformation matrix, the simulation of the three-dimensional world. "Computational Method" is the engineering mathematics, computer program scientific calculation, linear Equation Group solution, program library design and so has its figure. The content of probability theory and mathematical statistics is also applied to the fields of computer random number algorithm, shift transfer equation of dynamic programming algorithm and sample classification. The last need to mention the importance of materialism and dialectics in a non-mathematical discipline, the relationship between the things mentioned in Dialectics and the opposites of contradictions are embodied in the field of software design, operating system design and computer architecture design.
The so-called "ax", will be the basis of the discipline of solid, in fact, can help us to better study the theory of professional, but also deepen the understanding of the nature of professional disciplines.
Iv. Summary
To sum up, we start from the basic details of computer hardware, and gradually expand, understand the abstraction of computer hardware, and then understand how to use this abstraction directly manipulate the computer. Then according to the needs of the development of the computer, the operating system and compiler in the computer status, and realized that the operation is the computer resource Manager, and the compiler is a high-level language and computer hardware transmitter. Then we describe the theory and the content of each applied subject, and talk about the relationship between them and the computer system. Finally, we have re-examined the status of basic disciplines in computer systems. Believe that through the above description, perhaps we have a different understanding of computer science.
Category: Other
A ramble on computer science