Foundations for Learning Programming:
1, English Basics
While English is fine for beginner programmers who only need to write simple vocabulary, it is still important to learn and master it if you want to go farther. I highly recommend the English language is because in learning IT technology, without the ability to read professional documents is unimaginable, the Chinese translation is often in the monkey years and months to come out, and now many publishers simply print directly to the English language, the way to learn is to force themselves to look at the original textbooks, the beginning of the textbook will not be able to read, with more natural proficiency, to eat the pain of the hard work of the heart is definitely the qualities of any industry are needed. I believe that as long as there are a few years of work experience will be y touched!
2, computer architecture and assembly language
Books on architecture are all over the place, and much the same, but there is a very good book on assembly, "80x86 assembly language programming tutorial" (Tsinghua University Publishing House, black cover, Yang Jiwen), you need to focus on learning 386 after the protection mode of the program design. Otherwise you'll feel like you're reading from the sky when you're learning some of the underlying modern OS stuff.
3, computer operating system principles
Our development is always in a specific operating system, if not, there is only one possibility: you are in their own implementation of an operating system, in any case, the operating system principles is a must-read. It's like when we make a peripheral for a chip, the basic timing of the chip is essential to understand. There are a lot of books in this category, and I haven't found any that stand out, except that I think you should check out Inside Windows 2000 if you have time after reading them.
4, data structures and algorithms
This course can determine the level of a person's programming, is a core course. My first choice is the Tsinghua edition. Many people like to buy the C++ version, but I think it is not necessary, the syntax of C++ makes the process of algorithm implementation much more complex, and many teachers like to use the module of this thing to make the algorithm more complex, but in the C version of the book after learning to browse the C++ version of the book is the best.
5, software engineering
This course is the more to the later on the more important it is found, although the beginning of the time to look at the same as looking at the Mazzei do not know. Practical Software Engineering (yellow, Tsinghua). Don't spend too much time memorizing the rules and regulations, just 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.
6, Windows Programming
I recommend that anyone attempting to design a Windows program learn it carefully before learning VC, and the front of the book, "Inside Windows 2000" is also best to put the back of this book to read. In this book, there is no C++, no GUIs, no controls, just how to do Windows programming in raw C.
After learning it, you will realize that VC is actually very easy to learn, do not read this book before learning VC in advance, you'd better not touch, I know many famous schools have even used it as a textbook for teaching. It's very important.