**************************************** **************************
Copyright Disclaimer: The author of this article is an American scholar and an alumnus from Nanjing University.
This copyright is reserved for academic or educational (non-profit) purposes
You can reprint the electronic version of this article. If you
To repost this article on traditional media, please contact Nanjing University's little Lily BBS
The website's user Sir contact.
**************************************** **************************
I also come to pretend to be a master and talk about my personal experience in computer learning. Because I am engaged in theory, I will focus on theory first.
I remember my freshman year, when I first got a bachelor's degree, I had a mathematical analysis every Saturday class, a high-grade algebra in six class classes, and I had to work every day (that was my six-day working system ). Some of us are surprised to go wrong: What exactly are we reading? Yes, you did not go wrong. This is the Southern university computer system. The tradition in the Department is to train people who do academic research, especially theoretical research. However, the theoretical research on computer, after all, is mathematics, although it may be a non-mainstream mathematics in the eyes of orthodox mathematicians.
Mathematical Analysis of this stuff, we learn computer people have very complex feelings for it. Love it because it is the first course, and also the most credits of a mathematics class, and for a long time for postgraduate entrance exam courses-94 previously can choose to take a mathematical analysis and advanced algebra, in the future, the famous so-called "Engineering Mathematics 1" will be combined ". Its importance is evident. Hate it is because it seems to be a rare opportunity, and our thinking is very different from the discrete/limited work we usually do. The strange phenomenon in the past was that the high school mathematics basics of computer students were one of the top two in the school (hoping not to offend other students), and the teaching hours were second only to the mathematics department, however, the effect after learning is almost the last one. What is the cause? It is thought-provoking.
In my personal opinion, the requirements for mathematics for computer students are certainly different from those for mathematics, while those for physics are more different. The so-called "Advanced Mathematics" in non-mathematics majors is nothing more than deleting the difficult theoretical part in mathematical analysis and emphasizing the application of formula calculation. For computer systems, the most useful part of mathematical analysis is the deleted theoretical part. To put it bluntly, for computer students, the so-called "Engineering Mathematics 1" pursuing computation has completely entered the magic path. Can I understand the mathematical analysis by remembering the formula of a bunch of curved points?
The Chinese Mathematical Analysis books generally consider the "new lecture on Mathematical Analysis" by Dr. Zhang zhusheng as the best. I personally think that the "Mathematical Analysis tutorial" of the South university mathematics department is also good. At least it belongs to the typical South university style. Let's look at it. Any one that you want to learn can be used. In case your mathematics is so good that you are not full of these two books, you should go to the "calculus tutorial" of fekhkingoz-but I don't think it is necessary, after all, you don't want to go to the mathematics department.
The mathematical analysis topic set of gimidorvic is also basically a computing type. If you are going to take a test of what is "Engineering Mathematics 1", you can do it. Otherwise, do not do it.
China's so-called Higher Algebra is equivalent to linear algebra plus a polynomial theory. I think this has a good side, because it can make students feel that algebra is a structure, rather than a pile of matrices. When we used Lin chengsen and Sheng songbai to compile the "Higher Algebra", I still kept the teaching materials. This book fully covers the basic elementary results of polynomials and linear algebra, and provides some useful and in-depth content, such as the Sturm sequence and the shermon-Morrison Formula, generalized inverse matrix. It can be said that as an undergraduate, if you can thoroughly understand this book, you can be a master. Later, it was published in the southern publishing house. Unfortunately, it seems that it will not be used after the merger.
The better advanced algebra textbooks in China are also those used by the Tsinghua computer department. They are published by Tsinghua press, and there are many bookstores. The features are not much different from those of the south University.
However, the two books cannot be perfect. From the abstract algebra point of view, the results in higher algebra are just some examples of the properties of the algebra system. Mr. Mo zongjian's "substitute mathematics" has had a profound discussion on this. However, Mr. Mo's book is really deep, and it is difficult for undergraduates to accept it. You may wish to wait for yourself to mature and read it again.
The course of probability theory and mathematical statistics is very important, but something is missing.
Something missing is a random process. I have never heard of the Markov process before graduation. This is a shame for students in the computer science field. Without a random process, how do you analyze networks and distributed systems? How to Design randomization algorithms and protocols? It is said that the computer department of Tsinghua has a "random mathematics", which is a required course. I feel ashamed to be an engineering school.
In addition, the discrete probability is of special importance to computer students. Now, some schools in the United States have opened a simple "discrete probability theory" course, simply delete the continuous probability, the discrete probability deeper. We don't have to do this, but there is no doubt that we should emphasize the discrete probability.
The calculation method is the last course given to us by the mathematics department. Generally, students have limited emphasis on this course and think it is useless. In fact, it is essential to make a graphic image. In addition, in many scientific engineering applications, computing is dominated by numerical values.
This course has two extreme lectures: one is classical "Numerical Analysis", which fully describes mathematical principles and algorithms, and the other is the increasingly popular "Science and Engineering Computing ", simply teach students to program using software packages. Several teachers of the south University Mathematics Department have done a great job by translating an extremely classic textbook of the former into the "Introduction to Numerical Analysis" of stoer, Germany ". If you can learn the simplest 1/3 in this book, even if you have never taken this course in terms of computing methods! The other lecture seems that China has not kept up with the trend? However, as long as you have the opportunity to install MATLAB on your computer, you can be completely self-taught.
In this system, we usually open a discrete mathematics, including the set theory, graph theory, and abstract algebra. In addition, we open a separate mathematical logic. This arrangement is mainly due to the logic tradition of the south University: many teachers in the department count as Mr. Mo, and even Mr. Sun is a logic Professional (see Mr Sun's self-report ).
However, is it too time to squeeze so much content into a discrete mathematics course? In addition, students in computer science do not understand combinations and number theory, which is also a huge defect. To do the theory, it is too big to understand combination or number theory.
From the ideal state, it is best to separate six courses: Set, logic, graph theory, combination, algebra, and number theory. This is of course unrealistic, because there are not so many lessons. In the future, we may take three courses: Set and logic, graph theory and combination, algebra and number theory.
No matter how the course starts, students always want to learn the same thing. Next we will talk about the above three groups respectively.
Classical Set Theory: Beijing Normal University has published a "basic set theory. Mr. Zhu Wu (mujia), published by the south University, may have a higher opinion on "Guidance of set theory", but his book is too formal and hard to read.
Mathematical Logic, Mr Mo's book is naturally a classic. However, we have to admit that this book is a long term and it may not be enough to read it alone. In particular, the proposition/predicate calculus itself has a variety of different ways of speaking, and you can see a few more to greatly broaden your horizons. For example, Lu zhongwan's "mathematical logic for computer science" is good. Mr Zhu also wrote the book "mathematical logic tutorial", but he also tried to read it more easily.
In general, it is not difficult to learn collection/logic, but the more you will feel unmeasurable. It is recommended that interested students read Mr. Zhu's "basic introduction to mathematics"-This book has a brief history of time. It is a wonderful place. The so-called "the sky is falling, the rain is colorful" is dazzling. After reading this article, you will have a rough understanding of the most fundamental problems in mathematics/philosophy, as well as how high the mountains are and how deep the sea is.
After learning the above books, if you are still interested in further research, you can try "Introduction to axiomatic set theory" and "a course of mathematical logic" in the GTM series ". Both of these books have the world's leading version. If you can get these two books done, you can say that you have entered the door in terms of logic, so you don't have to waste any time listening to me. :)
It is said that only 30 people in China understand Graph Theory at most (in the previous lesson, MR. CHEN daoshen introduced mr. Zhang Kemin ). This statement is not false. Graph Theory is too technical. Almost every question has a unique method, which is a headache. But this is also the charm of it: as long as you are creative, it can give you a sense of accomplishment. So there is nothing to say about graph theory.
In the graph theory book in China, Mr. Wang Shuhe's "graph theory and its algorithms" are very successful. On the one hand, its content is comprehensive in Chinese textbooks. On the other hand, its emphasis on algorithms is very suitable for computer systems (originally textbooks of the Computer Science and Technology University ). With this book, I would like to take a look at several translation books, such as Bondy & Murty's "graph theory and its application" and the "graph theory and circuit network" translated by the Post and Telecommunications Publishing House, enough for undergraduates.
Furthermore, books from the world will introduce the "moderngraph Theory" of the GTM series ". This book is really classic! It seems that another Chinese company has published a translation version. However, it is better to read the original version to learn this level. This book marks the entry of graph theory. The combination does not feel very suitable for Chinese books. Read the classic "Specific mathematics" co-authored by Graham and knuth, which includes the translation version and the West electric generation.
Abstract Algebra: The Chinese Classic is Mr. Mo zongjian's "substitute Mathematics ". This book is a textbook of Peking University mathematics department and is well received. However, this book is too deep for undergraduates. You can first learn some other teaching materials and then look back at "substitute mathematics ". There are a lot of international classics, and there are a lot of GTM series. We recommend the following:
Http://www.math.miami.edu /~ EC/book/
This "Introduction to linear and abstract algebra" is easy to understand and combines abstract algebra with linear algebra, Which is ideal for beginners. However, pay attention to copyright issues and do not violate the law.
In terms of number theory, there is a classic Chinese "Elementary number theory" known for its difficulties (Pan's brother, Peking University edition ). Another point is that there are more classic (world-class) and more difficult "number theory guidance" (the masterpiece of Mr. Hua Luogeng, the Science Edition, and the re-printing of Chapter 9 bookstore ). It is sufficient for undergraduates to take the basics into consideration. However, this is only elementary number theory. After graduation, you must read an English book, such as Bach's "Introduction to algorithmic number theory ". The fundamental of theoretical computers lies in algorithms. Undergraduate Students in the current Department
It is indeed correct to design and analyze algorithms. Looking around the Western world, no third-stream or above computer system does not take algorithms as a required discipline.
Currently, algorithm textbooks are best suited to "Introduction to algorithms", such as Corman. This book is sufficient for beginners and does not need to be referenced in other books. Nanda translated and published this book. Its Chinese name is "data structures and algorithms commonly used in modern computers". Pie seems to provide links to online courses, so I don't need to talk nonsense.
Finally, let's talk about formal languages and automated machines. We have used beiyou's teaching materials. We should say it is clear. However, it should be emphasized that the role of formal language and automatic machines is mainly used as computing models rather than compilation. In fact, the front-end of compilation is already in the dead field and there is no open problem. For this purpose, we do not need to learn formal language-it would be enough to use YACC or anything. In terms of depth, beiyou's book has great limitations in its relationship with testability, and its modern sense is also insufficient. Therefore, it is recommended that interested students read the English documents... but there are not many good books in the English documents, and there seems to be no textbooks introduced in China.
After getting started, it is interesting to compare the formal language with the model defined in the automatic mechanism and the model defined by recursive functions in mathematical logic. Now I know what it is called "the beauty of the palace room, the wealth of hundreds of officials"!
Learning computer by Hu Kan-beyond Theory
If a computer has only theory, it is just a branch of mathematics, rather than an independent science. In fact, apart from theory, computer science has a broader sky. I always think that four years is not enough to learn basic computer knowledge, because it is too wide ...... A top-notch computer science student should never be a programmer, but he must be a programmer first.
When I went to college, I started programming in my first major class. Now I seem to have changed to an introduction to computer science? No matter what the name is, in short, people who read computers rely on programs to eat.
Last year, there was a debate in the computer system version about which programming language should be used. I personally think that what language is used is the final part, and the key is to develop good programming habits. The teacher told us that it only takes one week to learn a new language after laying the foundation. Now I don't think it will take a week. The premise is to lay the foundation first.
There are two different methods of Data Structure: one is to treat it as a junior algorithm class to reduce requirements, and the other is to treat it as a high-level programming class. At present, the domestic courses seem to be between the two, but slightly biased towards the former. I personally think that if there is another required algorithm class, I am afraid the next goal is more important.
There are also two types of popular data structure books in China: Peking University redbooks (Xu zhuoqun,) and Tsinghua green books (Yan Weimin, Tsinghua edition ). There is not much difference between the two books. In theory, the redbooks are a little deeper. Of course, they are far from strict algorithm books. The Green Book is easier to accept and has a good exercise set, but I think it may not be good for students to write their homework using pseudocode. It is best to debug all the algorithms to exercise programming skills.
Assembly predictions and microcomputer principles are two very annoying lessons. Your mathematical/theoretical foundation is good, and you cannot take advantage of it. The order between the two courses is better than that between the first and first courses. No matter which course you want to learn first, it will involve things in another course. Therefore, we can only calm down and ponder over it. This is a typical engineering class. It does not require too much intelligence and Epiphany, but it needs to be gradually enlightened.
The books for these two courses are not difficult to find in the computer book store. Let's take a look at the latest ones.
Simulation Circuit, nowadays, not only are computer students confused, but electronics students are also mostly afraid. If you really want to use both hardware and software, we suggest you first look at the "circuit principle" of Qiu Guanyuan. Maybe it will be sufficient to look at the basis of the analog circuit later.
Teaching material: Kang Huaguang's "Electronic Technology Basics" is still good. If you are interested, you can refer to the Book of Tong shibai.
Digital Circuits are much better than analog circuits. YAN Shi's book is also a good teaching material. Unfortunately, there is less integration circuit. If you are really interested, go to the southeast Radio Department to attend their courses.
How to teach the computer system structure is still under discussion internationally. The "computer organization and architecture: Designing for performance" (Tsinghua photocopy) of Stallings is a good teaching material available in China ). The most popular internationally is "computer architecture: a quantitative approach", by Patterson & Hennessy.
The operating system can choose either Tanenbaum's "Operating System Design and Implementation" or "Modern Operating System. Both parts can be regarded as classic, and the only drawback is that they are not strict enough in theory. However, this field belongs to the hardcore system, so in theory it is quite understandable.
If the formal linguistics is better, I only need to learn four algorithms in the front-end of the compilation principle: the easiest way to implement recursive descent; the best top-down algorithm LL (k ); the best bottom-up algorithm LR (k); LR (1) Simplified SLR (maybe another simplified lalr ?). The backend belongs to the engineering nature and is naturally an another story.
Recommended materials: famous Dragon book by Aho and others: "Compilers: Principles, techniques and tools". Or Appel's "Modern compiler implementation in C ".
The first significance of learning a database is to tell you that VFP programming is not the same as understanding a database. (There are too many people in the world who think they know databases !) Database Design is both scientific and artistic, and database implementation is a typical project.
Therefore, in a sense, databases are the most typical computer course-science and technology integration and mutual penetration.
Recommended materials: silberschatz, Et Al., "Database System Concepts ".
The standard network teaching material is also from Tanenbaum: "Computer Networks" (Tsinghua photocopy ). However, the network also belongs to the hardcore system, so reading books is not enough. We recommend that you read more RFC from the IP address. When you can master about 10 common protocols, few will dare to underestimate you.
It is necessary to end this "joke" and I will not be able to laugh at it any more. In fact, there are still many basic courses for computers, such as programming language principles, graphic image processing, and artificial intelligence. Donnell: I have limited accomplishments. I dare not make anyone laugh again.
The last statement: the two "Hu Kan" articles are only for undergraduate courses. Even if all these steps are completed, the road ahead is still long ......
Theoretical Computer Science
He promised Russel for a long time. Today, I have a little time to pay back my debt.
The relationship between computer science and mathematics is a bit strange. 20 or 30 years ago, computer science was basically a branch of mathematics. Now, computer science has a wide range of research fields and many researchers, in many ways, in turn to Promote the Development of mathematics, in a sense, it can be said that the child grows higher than the mother.
But in any case, this child is always in the mother's blood. This blood is the mathematical underpinning of computer science (the mathematical foundation of computer science), that is, theoretical computer science.
Another cross between modern computer science and mathematics is computational mathematics, numerical analysis, and scientific computing, which is traditionally not included in theoretical computer science. Therefore, this article ignores all computational mathematics.
What is the most common word that is put together with theoretical computer science? A: discrete mathematics. The relationship between the two is so close that they become synonyms in many occasions.
Traditionally, mathematics is centered on analysis. Students in the Mathematics Department should study mathematics analysis for three or four semesters, and then perform complex, real-time, and functional analysis. Real-time variables and functional functions are considered by many to be the entry of modern mathematics. It is mainly used in physics, chemistry, and engineering.
With the emergence of computer science, some mathematical branches that were not previously very valued suddenly become important. It is found that the mathematical objects of these branches are significantly different from those of traditional analysis: the objects of analysis and research are continuous, so differentiation and integration become basic operations; the research objects of these branches are discrete, so there is little chance to perform such calculations. These branches are called discrete mathematics ". The name of "Discrete Mathematics" is getting louder and louder, and the traditional branch of mathematics centered on analysis is called "continuous mathematics ".
After decades of development, discrete mathematics is basically stable. Discrete Mathematics is generally considered to include the following subjects:
1) set theory, mathematical logic and metamathematics. This is the foundation of mathematics and computer science.
2) graph theory, algorithm graph theory, combined mathematics, and combined algorithms. Computer science, especially the core of Theoretical Computer Science, is algorithms. A large number of algorithms are built on Graphs and combinations.
3) abstract algebra. Algebra is ubiquitous and is very important in mathematics. In computer science, we are surprised to find that algebra has so many applications.
However, is it so easy to add the "discrete" hat to the theory of computer science? After about a dozen years ago, a master finally told us: No.
D. E. knuth (how great he is, and I don't want to talk nonsense) opened a brand new course concrete mathematics in Stanford. The term concrete has two meanings:
First, for abstract. Knuth believes that the objects of traditional mathematical research are too abstract, leading to insufficient concern for specific problems. He complained that the mathematics he needed in his studies often did not exist, so he had to create some mathematics himself. To direct application-oriented needs, he must advocate "specific" mathematics.
Here I will give a simple explanation. For example, in the theory of set, mathematicians are concerned with the most fundamental problem, such as the nature of the systems of justice. The nature of some specific sets, various common sets, relations, and mappings are not important to mathematicians. However, what is used in computer science is exactly these specific things. Knuth was the first computer in the world to see this.
Second, concrete is continuous (continuous) plus discrete (discrete ). Continuous mathematics and discrete mathematics are useful mathematics!
The above is mainly from the mathematical point of view. From the computer point of view, the main research fields of theoretical computer science currently include: Computational Theory, algorithm design and complexity analysis, cryptography and information security, distributed computing theory, parallel computing theory, network theory, biological Information computing, computational geometry, and programming language theory. These fields are intertwined with each other, and new topics are constantly being proposed. Therefore, it is difficult to come up with a clue. Here are some examples.
Due to the application demand, cryptography is now a hot topic in research. Cryptography is based on number theory (especially computational number theory), algebra, information theory, probability theory, and random processes. It is sometimes used in graph theory and combination.
Many people think that cryptography is encryption and decryption, while encryption is to use a function to disrupt data. This is a big mistake. Modern Cryptography includes at least the following levels:
First, the foundation of cryptography. For example, is it really difficult to break down a large number? Is there a general tool to prove that the agreement is correct?
Second, the Basic Topic of cryptography. For example, a better one-way function and signature protocol.
Third, advanced cryptography issues. For example, the length of the zero-knowledge proof is used to share secrets.
Fourth, new applications of cryptography. Such as digital cash and traitor tracking.
There are also many important theoretical issues in distributed systems. For example, Process Synchronization and mutex protocol. A classic result is that, when the communication channel is unreliable, there is no definite algorithm to achieve inter-process collaboration. Therefore, it makes little sense to improve the TCP three-way handshake. For example, timing problems. A commonly used order is a causal order, but it was not long ago that there was a theoretical result ....
For example, there is no practical way to deal with deadlocks.
For example ,......
About deadlock re: Theoretical Computer Science (6)
I simply think it is related to entropy. It is not that complicated. The key lies in efficiency: the methods used to deal with deadlocks, such as Deadlock Detection, have greatly reduced the efficiency, and thus fail to give up, because deadlocks are not a common phenomenon. So globally, the so-called "Ostrich algorithm" is generally used, that is, to pretend that nothing will happen. For example, if you want to design an algorithm to access Shared data, you need to prove that your algorithm is deadlock free locally. As to whether it will lead to a global deadlock, it will not bother a lot.