The concept of computer science is a little big. For computer science and technology majors, the following are mandatory: 1. Computer composition principles (including predicate courses & ldquo; digital logic and digital systems & rdquo;, referred to as & ldquo; digital Power & rdquo;): This is a basic hardware course. after learning it, you can clearly understand how to build the entire computer system by using the simplest digital components like building blocks, that would be a pass. 2,
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"): This is a basic hardware course. after completing the course, you can clearly understand how to use the simplest digital components, building a whole computer system like building blocks makes it a pass.
2,Linear algebra, probability theory and discrete mathematics: You must know that any major that can be called "science" must have a certain degree of mathematical skills. Otherwise, it cannot be called "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? AlgorithmThe Chinese version is "Introduction to Algorithms": I think we should learn it instead of the "data structure" that we are 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. Introduction? Although some chapters in algorithm are mixed with a lot of annoying "math", they can essentially show you the necessary and interesting course.
4,Operating system and compilation principles: The operating system can be said to be an experiment class 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 what is inside all the programs you have used. you can write most of the programs in a language you are familiar with. 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 Mathematics?? Specific 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 Algorithms?Introduction to Algorithms, all programs require algorithms as the basis, so algorithms have to be learned.
- Introduction to Computer Science and Programming?I introduced the computer as a whole, and also gave students an idea of what CS can do. what should I do.
- Operating System Engineering? The importance of the operating system is self-evident, and the compiler is also introduced.
- Network?Network 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.