I. Learning the knowledge of teaching materials
As an already employed programmer, I do not think that all professional courses in computer science (including professional basic courses, which I still have in college) are useful. In fact, for most programmers, just a little bit of knowledge is enough. This knowledge is mainly composed of the following courses: data structure, compiling principle, operating system. For most programmers, the content of other courses is not useless, but is not used in practical work. Data Structure
The importance of this course can be understood as the programmer's Bible, how to describe its importance is too much. What I want to know about this course is as follows:
1. Knowledge of all linear data structures, such as tables, stacks, queues, etc. (generalized tables may not be required)
2. Basic operation and basic use of two-fork tree
3. The diagram needs to know the traversal and understanding of the shortest path algorithm, as well as some related concepts
Of course, for some programmers, this is not enough, because the specific software development work involved will have different requirements. But for the majority of programmers engaged in MIS software development, this knowledge is enough. Mastering this knowledge can have two levels of requirements. The first one is to complete enough exercises to be proficient in the answer, and the second is to be able to use the data structure to describe the actual things in the actual work. To achieve these two requirements should be said not too high, pay attention to more practice on it. At present, the course of the classic textbook is also a lot, I believe that as long as the step-by-step study is qualified. Compilation Principle
This course is mainly about learning methods and ideas rather than the knowledge of the course itself. Because there are so few people out there who can work on the development of compilers. This course needs to be mastered not many things, my personal views are mainly the following several:
1. Determination of the use of finite automata and indeterminate finite-automaton
2. The implementation of lexical analysis program
3. Methods of grammatical analysis
The embodiment of the self-motive in the actual application is equivalent to the state transition diagram, this tool is very important, be sure to master. When we develop entitymodelstudio, the content of the interactive part of the design interface is to design the state transformation diagram and then write the code, otherwise the direct development will face the risk of developing out of control, while the reconstruction and maintenance will be quite troublesome. So this tool is extremely powerful and very practical. In addition, the ability of the tool and the deterministic finite automata are equivalent to the indeterminate finite automaton. However, because of its uncertainty, more in line with human natural thinking habits, so in some design situations relatively convenient. This is very practical, but also very attractive.
Mastering the realization of lexical analysis program can greatly expand the development ability and thinking ability. This part of the theory may be more difficult to describe, but the actual use is still very easy to get started, so it is worth learning. The parser does not need to be mastered, after all, the opportunity to develop compilers is negligible. But the relevant methods and ideas to be able to understand, this can help the programmer to use the computer's thinking to think about the problem. Operating System
There are only two things to master:
1. Five basic methods of management, especially those involving memory management
2. Synchronization technology for threads or processes
The operating system is complex, but the management methods introduced in the textbook are relatively straightforward to understand. The importance of basic knowledge is embodied in this difficult simplification, and the application of basic knowledge in practical development is extensive. With a good understanding, you can understand the techniques of solving complex problems in simple ways. Thread process synchronization, this does not have to say, we all know its role, if really do not want to grasp the words, I am also very willing to believe that your reasons must be adequate, otherwise you will never do so.
Finally, I want to emphasize that no matter how you look at this knowledge: May feel useless, may feel too difficult, may be not interested, but if you want to be a programmer, then you must be the most likely to be strong, the most likely to master it skillfully.
Developer must on the website--devstore