Promised to a new freshman small pot Yu pointed out, so I am here to say a little bit. If you have a brick home and you feel ridiculous, please do not give your opinion. Thank you.
First of all, it is recommended that Sir Senior's "Hu Yu" (Click to transmit), nearly 20 years has passed is still classic. Then, my understanding of the various courses is this:
First of all, speak English. The university is no one "teaches" Your English, English class is very nonsense, English all depends on self-study. Fortunately, the grammar of the local high school is finished, the university is basically vocabulary, practical application and so on. The importance of English is: level 46, postgraduate examination, there are original professional books. One of the original professional books is the most important. The information about the computer you want to contact in the future is much more useful than the Chinese language.
Then mathematics, the importance of mathematics as much as the computer's specialized courses, in a sense, more important than some specialized courses. There are so many math classes in the university computer majors: Advanced mathematics, linear algebra, probability and statistics, discrete mathematics, numerical analysis.
Advanced Mathematics : The basis of university mathematics, from the credit can also be seen its importance. The vast majority of school engineering students are learning high numbers, while science (especially mathematics) is a mathematical analysis. The content of the two is almost the same as the limit calculus, but the emphasis of the high number is to find out the solution of the formula, and the point of the number is to prove the equation. In other words, the high number of partial applications, the theory of partial bias. Not to say which is more important, the two ways of thinking are different, I think the importance of this thing lies in the exercise of their own logical thinking, from this point of view, both are equally important. Therefore, it is no harm to have a free time. Recommended higher education publishing house "higher mathematics" (General school's high number of textbooks), Peking University publishing house Zhang Sheng's "mathematical Analysis of the new lecture", Sir Predecessors recommended the Nanjing University Press "Mathematical Analysis course", but also the force, you can do a Demidovich "mathematical Analysis Problem Sets" (Simply scary!) and Singapore The Thick of the Math Handbook for postgraduate exams (what I forgot).
linear algebra : Another mathematical basis, with the previous high school mathematics is not the same, come up is a big square determinant. But learn to learn you will find, in fact, the appearance is not the same, do it or set of theorem set formula. It's boring. If you want to be bored, you can look at Advanced algebra. According to Sir Senior, the high-generation is linear algebra plus a point polynomial theory, but he recommended the book is quite strong (from Demidovich to the two natural segments, I will not excerpt).
Probability and statistics : or set of formulas, and compared to the high and the line of the set of more mechanical, more easily, as long as it can be distinguished from this is the XX distribution can be. However, I hope to learn the distribution after learning, because in the future if you study computer, this is a hurdle. For example, with the Bayesian comrade named those algorithms, like what Bayesian network, Bayesian classifier ... In the future, when it comes to data mining, pattern recognition and artificial intelligence, probability and statistics will play some role.
Discrete Math : This is the orthodox computer math. The so-called "discrete" means "discontinuous", because the number in the computer is not continuous representation, so the algorithm in discrete mathematics is more like a computer invented (of course, this is nonsense, but the two are somewhat similar, many computer algorithms are derived from discrete, the data structure of the tree and figure almost according to the theory of BA). Discrete mathematics is a collection, including set theory, graph theory, algebra, combinatorial mathematics, number theory, predicate logic these, in fact, every mathematics can be studied very deep. For discrete mathematics, the "Discrete Mathematics Course" published by Peking University, as well as the "discrete Mathematics and its application" and "Concrete Mathematics" (which is only in English) are translated by the mechanical industry press. The following is a brief discussion of each course:
set theory : Relatively simple (except the classical set theory), I was simply over again did not delve into;
graph theory : graph theory is difficult, According to Sir Senior, "the country really understand the figure theory of less than 30 people," probably more than 20 years some, but should also be less than 100 bar (mouth hu. Figure difficulties in the absence of a fixed idea, it seems that each topic has a unique way of proving, and some have not yet been proved, such as the problem of traveling business. Recommended Wang Shuhuo "graph theory and its algorithm".
algebra : The nature of the group ring module is fun, sometimes abstract and unpredictable, but careful study will find it fascinating. The advanced algebra that we have learned in the past is just a small part of a generation of mathematics. Some algebra does not suggest premature contact, like what Lie algebra, commutative algebra and the like, easy to be possessed.
Combinatorial Math : It's just a bunch of things, but much deeper. Undergraduate separation is seldom mentioned. Have the power to take a look. Recommended Tsinghua Lukaishing Lu Huaming wrote "Combinatorial Mathematics", as well as the mechanical industry publishing house translation of "Combinatorial Mathematics" (this proposal to read the original English, should have been to the 5th or 6th edition, Chinese translation or 3rd version).
number Theory : This initial contact is a long time ago, it should be in primary school, learning to divide and prime numbers, greatest common divisor these things. This is called Elementary number theory in number theory. In addition, there are algebraic number theory, beyond number theory and so on, is not recommended premature contact. Recommended Chen Jingrun "Elementary Number Theory" (thin a few days to read, pupils can see), as well as Peking University Pan Pan Chengbiao "Elementary Number Theory".
predicate logic : It is relatively simple, the middle school learned. Recommended Science Press, "Mathematical Logic for Computer Science".
Numerical Analysis : In fact, I do not know how to introduce, the original did not study hard, to now also not how to need. Sir senior over there is written "calculation method", the introduction is also relatively simple, perhaps the computer used less.
There are two math classes at the graduate level: stochastic processes and functional analysis. is a more frightening course. I heard that hit computer graduate student hanging rate is the first random process, the second is a functional, the Chinese Academy of Sciences, the first branch of the division is the functional, the second is random. It has been said that "random process random, functional analysis of the heart of the cold" ...
In addition to the books recommended above, it is also highly recommended that a set of us postgraduate textbooks GTM, a series of more than 200 books, covering all mathematics. such as "linear algebra" "Linear algebra and Abstract algebra" "Generation of Mathematics" "Graph theory" "probability theory" and so on, are very good.
However...... Need to bite the bullet to bite English.
Now let's talk about the computer (finally to the point).
Outside the crazy "xxx is the best language in the world" do not have to listen, carefully learn a few of the most basic language:c,java,c++. Personally, in terms of language difficulty, C and Java add up is more simple than C + +. C is the lower-level language, oriented process, focusing on the fine control of memory, learning should let oneself "stand in the memory angle" to consider the problem; Java is a standard object-oriented language that teaches you to look at a problem from an object perspective. C Top-down programming, Java from bottom up. Have learned to understand a lot of computer "zen meaning." C + + is all-encompassing, can be written as a C-oriented process, but also written in Java object-oriented, all kinds of flexibility, however, this "all-encompassing ability" idea destroyed the language, it is too complex, almost uncontrollable. It's a little exaggerated to say "ruined," but it's really a bit more complicated than C and Java. Recommended "C Primer plus" How to C program, "Java Core programming" "Crazy Java Handout" "C + + Primer Plus" "C + + Primer", effective series, "C Traps and defects" ... Seriously not recommend rectification book, easy astray.
By the way, recommend the compiler bar, C + + recommended Visual Studio, if too large can be used mingw,devc++,codeblocks, reject TC2/3 and Vc6;java recommended IntelliJ Idea,eclipse,netbeans , MyEclipse is not recommended.
If someone recommends another language, they're right, but don't listen. For example, C # has the most powerful compiler in the universe, Visual Studio support, syntax similar to Java but it is comfortable to write, the development of graphical interface so EASY;JS is a dynamic language, not the type, and adapt to a variety of platforms; PHP easy to write Web site, want what function just go to the Internet to check the function is good Go easy to write large-scale concurrency, abandoned the Java heap of redundant things, I am writing python, universal language, development efficiency is very high, what library have ... no, lay the foundation is the most important. A lot of learning python trample on the face of countless people to the end or honest to see the memory allocation principle, if the early C these are pediatrics.
Language is the introduction, after the introduction, come in, don't worry, there is a door, the first encounter is data structures and algorithms . Data structure is the way of expression in memory, the algorithm is the processing of data in the CPU, the two are complementary. So there is the famous sentence: program = data structure + algorithm. I personally think that the data structure and algorithm should be the most important course of computer science undergraduate. In the hope of learning, not for a while to write a bunch of pseudo-code on paper, that is basically white writing. The data structures and algorithms that have been talked about are implemented in language, so they are mastered. Recommended Tsinghua Press Min's "data structure (C language description)" "Algorithm Introduction" "Algorithm", if you are finished, you can try to look at the set of shocking "computer programming art".
After the data structure and the algorithm, is the computer's specialized course, probably has such some: the compiling principle, the operating system, the database, the information theory and the coding theory, the computer network, the machine Constitution principle, the architecture, the embedded, the graphics, the software engineering, the computer security science. Undergraduate probably this, if there are other classes, the basic is the nature of lectures, are the main research direction of postgraduate stage.
The principle of compiling : There is a class called formal language and automata, probably can calculate this course of the first course, and the mathematical calculation method also has some relations. It's mainly about grammar, how to turn our natural language into logic and process that the computer can understand. I'm ashamed to say that I didn't understand the lesson. However, after the completion of the compilation of the principle of the front half is very easy. Recommended Mr. Engineering's "formal language and automata" and the mechanical industry press translation of the "compilation Principle" (Dragon book).
OS : It's not easy to talk about Linux and Windows. Operating system four blocks: process, memory, IO, file, this is to learn. Of course, when learning to recommend a Linux system, you will find that the more you use the more cool, from the development point of view, more comfortable than Windows. CentOS and Ubuntu are now more popular, and it is estimated that there is little likelihood of change in two years. Recommendation Book Machinery Industry Press "Modern operating system", higher Education Press "operating system concept", there are two large-size "Linux kernel source code scenario analysis." Read the Linux class operating system source code, the operating system is very familiar with the great help.
database : Can speak er diagram, relationship, paradigm and so on, of course, also speak SQL. Just SQL, that's not called a database. But when it comes to SQL, it's best to install a database to practice practiced hand. It is recommended that you use MySQL or PostgreSQL, of course, if you use other databases together. I was using SQL Server the same year. So my impression of the database has been bad (obviously personal bias). Recommended "Operating system concept" of the mechanical industry press.
Theory of information and coding : This course should belong to the extension of algorithm class to a certain aspect, but also belong to the premise of computer network and cryptography.
The principle of computer composition : Now the school is basically not a separate assembly , are placed in the principle of computer composition. These two things are really disgusting to vomit blood, you have me I have you, scissors constantly, entangled flesh. That's probably the case. Computer architecture can be considered as a follow-up course, and it can be related to the operating system when it comes to memory allocation. Recommended "computer system structure: Quantitative Research Methods" "in-depth understanding of computer systems."
Software Engineering : The university is basically a story class, there is no code, no test IQ things. However, it is helpful to understand the whole project in the future. From requirements, design, to development, testing, to on-line, operational, you will have a complete and clear understanding of the project process. Since then, the software is no longer your 32 lines full of bugs of small toys, but a lot of people work with the team.
Several other courses, embedded, graphics, security, I do not know very well, do not introduce. tend to be in some way. High-end courses I do not want to introduce, one is the science is not, two is I do not know much. In the postgraduate course, there are several very hot areas: AI, data mining, machine learning, pattern recognition, cloud computing, Internet of things, natural language processing, search, and so on. You need to have a solid grasp of the math and computer knowledge of the undergraduate.
There are several courses that I have been puzzled about, university physics, Analog circuits, digital logic (digital circuits). I didn't feel like I'd used it after I finished my study. What else is the introduction of computer, the basic programming, such as the class, should not be to the computer professional people open, feel free to listen to the good. And the political history classes that have to be learned, uh ... Can I say that I am very good horse zhe ... Well, it's far away.
This article is probably written like this. When I think about it again, maybe I can add it up at any time.
What should college computer majors learn?