College English-Don't feel funny. I highly recommend this course because the ability to read without specialized documentation is unthinkable. Translations in Chinese often don't come out until the Monkey Years, and many publishers nowadays simply print the E text straight up. The way to learn is to force yourself to read the original textbook, the beginning will not understand, with more natural skill. The fact that you have to eat hard to be ruthless is definitely a quality that is needed in any industry.
Computer architecture and assembly language - books on architecture are all over the place, and they are pretty much the same, but there is a very good book on assembly, "80x86 Assembly Language Programming Tutorials" (Tsinghua University Press, black cover, written by Yang Jiwen). You need to focus on learning post-386 protected mode programming. Otherwise you'll feel like you're reading from the sky when you're learning some of the underlying modern OS stuff.
Principles of Computer Operating Systems - Our development is always done on a specific operating system, and if it's not, there's only one possibility: you're implementing an operating system yourself. In any case, OS principles are a must-read. It's like when we make a peripheral for a chip, the basic timing of the chip is necessary to understand. There are a lot of books in this category, and I didn't find any of them to be outstanding. I just think that after reading these books, if you have time, you should take a look at "Inside Windows 2000" (Microsoft Press, I read the E version of the book, the Chinese title must be Windows 2000 Technology Insider and so on). The need to learn it has already been discussed in another article on ZDNET.
Data Structures and Algorithms - This course is a core course that can determine the level of one's programming. My first choice is the Tsinghua edition (Zhu Zhaoli, Liu Tianshi). Many people prefer to buy the C++ version, but I don't think it's necessary; the syntax of C++ makes the algorithm implementation process much more complicated, and many teachers like to use modules to make the algorithms more complicated. Instead, it's best to browse the C++ version of the book after you've finished the C version.
Software Engineering - This course is one of those courses where the more you get into it, the more important you find it, although at first it's as confusing as looking at Mazzei. My advice is to read Practical Software Engineering (yellow, Tsinghua). Don't spend too much time memorizing the rules and regulations, and skip over them if you can't understand them. After each time you have completed a software design task (whether it is practice or work) and then review the review, each time there will be a gain.
Windows Programming - Peking University Press, Petzold I recommend that anyone attempting to design a Windows program carefully study it before learning VC. I recommend that anyone attempting to design a Windows program finish it carefully before learning VC, and the previous book, Inside Windows 2000, is best read at the back of this book. In this book, there is no C++, no GUI, no controls. All you have is how to use the original C language to complete the Windows program design. After learning it, you will realize that VC is actually very easy to learn. Don't get ahead of yourself and learn VC without reading this book, you're better off not even touching it. Many of the best schools I know have even used it as a textbook for their classes. You can see how important it is.
The above courses I think are important to take (if you want to be a Windows programmer).
For the rest of the courses, here's the easy way to choose: if you're a computer science student, take all the basic courses in your major. If not, refer to the computer science department's course schedule. If you find yourself reading a book that you can't get through, turn to the end of the book, look at its references, find them and study them, then go back to the book. If a book has the word "principles" in the title, you must not memorize the details of the book, but rather get the gist of it at a rate of at least 50 pages a day. Practice a theory or algorithm on a computer as much as possible.
You can also read many book reviews on CSDN. These book reviews can help you decide what kind of books to read.