As far as computer science and technology are concerned, the following are compulsory courses:
1, Principles of Computer Organization (including the prerequisite course "Digital Logic and Digital System", referred to as "Digital Electricity"): This is a basic hardware course. After learning, you can clearly know how to construct the whole computer system from the simplest digital components like building blocks, and then you will pass the test.
2. Linear algebra, probability theory, discrete mathematics: You know, any major that can be called "science" must have a certain mathematical foundation, otherwise it is difficult to be called "science". These three courses are the most important mathematics courses at the undergraduate level, which are more important than advanced mathematics. If you want to go further on the road of computer science, these three courses are compulsory.
3. Introduction to Algorithms offered by MIT, the Chinese version is called Introduction to Algorithms: We should learn it, not Data Structure, which is used to offering in China. Data structure is only a part of the algorithm. Domestic data structure courses avoid a lot of essential things, but list some common data structures, which is always a bit anodyne to learn. Although some chapters of Introduction to Algorithms are mixed with a lot of annoying "mathematics", it can help you appreciate this very necessary and interesting course in essence.
4. Operating system and compilation principle: Operating system can be said to be an experimental course of introduction to algorithms. It is best to realize a small operating system or a Demo of each subsystem of the operating system during the study period. Compilation principle may be a difficult course for undergraduates, but as a software scientist, it is the foundation of the foundation. After learning, all languages should not be much different in your opinion. This course should be an experimental course of introduction to discrete mathematics and algorithms. It is best to realize a small compiler during the study period, and it is best to create the language yourself.
5. Mastering a common programming language and technology: I can understand what all the programs I have used are like, and I can write most programs in a language I am familiar with, at least I can't be confused about any programs.