The concept of computer science is a little big. For Computer Science and Technology Majors, the following are mandatory:
1. Computer composition principle (including the first course "digital logic and Digital System", referred to as "Digital Power"): This is a basic hardware course, after learning, you can clearly understand how to build the entire computer system from the simplest digital components, just like building blocks.
2. Linear Algebra, probability theory, and discrete mathematics: You must have a certain mathematical knowledge for any major that can be called a "science". Otherwise, it is difficult to call it a "science ". I think these three courses are the most important three mathematics courses in the undergraduate period, and they are more important than advanced mathematics. If you want to go far on the road of computer science, these three are mandatory.
3. "Introduction to algorithm" opened by MIT. The Chinese version is "Introduction to algorithms": I think we should learn it instead of the "Data Structure" that is used to in China. Data structure is only part of the algorithm. The data structure course in China avoids many essential things. It is just a list of some common data structures, and it is always easy to learn. Although some chapters in introduction to algorithm are mixed with a lot of annoying "Mathematics", they can essentially show you the necessary and interesting course.
4. Operating System and compilation principle: the operating system can be said to be an experiment course in "Introduction to algorithms". It is best to implement a small operating system or a demo of each subsystem of the operating system during the course of study. Compilation principles may be a difficult course for general undergraduates. However, as a software scientist, This is the foundation of the basics. After learning, there should be no major difference in all languages, this course should be an experimental course on Discrete Mathematics + introduction to algorithms. It is best to implement a small compiler by yourself during the learning period. The language should be self-developed.
5. master a common programming language and programming technology: You can understand the general internal nature of all the programs you have used, and write most of the programs in the languages you are familiar, at least it cannot be confused about any program.
The above is not hard to achieve. I think it is the foundation of the foundation. I am excited that they should not earn a degree if they cannot master them.
In short:
- Mathematics (probability, statistics, Calculus, etc)
- Language courses (Java, C ++, etc)
- Data structures and algorithms
- Computer Network
- Operating System and compilation principles
In fact, as long as algorithms and math are good, most IT companies in Silicon Valley can be used.
Specific books
- Concrete mathematicsSpecific mathematics is definitely one of the mathematical basics of computer science. A major reason why computer science in China cannot keep up with other countries is that I always think it is a mathematical gap.
- Introduction to AlgorithmsIntroduction to algorithms, all programs require algorithms as the basis, so algorithms have to be learned.
- Introduction to computer science and ProgrammingI introduced the computer as a whole, and also gave students an idea of what CS can do. What should I do.
- Operating System EngineeringThe importance of the operating system is self-evident, and the compiler is also introduced.
- NetworkNetwork Programming: How many undergraduates of Chinese universities are proficient in network programming. The number of programs today does not need to consider the network.
Sometimes I want to ask myself a few questions:
- After you have learned all kinds of mathematics, principles, and algorithms, what problems can you solve with these knowledge?
- What applications or systems can you develop? How powerful development capabilities do you have?
- Are more people more interested in this major, or are they tired, afraid, or even give up?
- How much do you still remember when I graduated from college? How many are still in use?
In fact, courses that can solve problems are the most important.