- . NET programmer to high-end must read a single summary
- First, the Knowledge tree
- 1. Basic Competencies
- 1.1 Mathematics
- 1.2 English
- 1.3 Language expression
- 2. Computer Organization and architecture
- 3. Algorithms and data structures
- 4. Operating system
- 5. Computer network
- 6. Information Management
- 7. Developing languages and frameworks (for example, the. NET platform)
- 8. Software Engineering
- Ii. Methods of Learning
- Third, PostScript
Today's program development is becoming more and more simple (rich APIs, intelligent Ides, more and more development frameworks), and ordinary people can accomplish many programs by combining and copying through simple training. So the programmer of this past high-tech career synonymous, now is so cheap, known as the Code farm. Using microeconomic principles, when supply increases and demand is constant, the price balance will move down, so the average programmer is getting lower wages. and the numerous training institutions on the streets are still producing, and it is expected that the price balance will be shifted down in the near future (regardless of inflation). Then as a visionary programmer should strengthen their internal strength, become irreplaceable. Reading is the most effective way to invest, I have already read and prepare to read books, and according to the knowledge of the categories for everyone to reference and discussion.
First, the Knowledge tree
Computer Science and technology is a large and complex subject, it is impossible to understand all the content, but can be through the knowledge tree to understand the core knowledge of the entire domain, for the subsequent application of the preparation.
If computer science and technology are regarded as military study words, the left part is the internal strength, the right part is a move. Military study master can use simple moves to play a huge power, is because the strength of the strong. So to understand the whole computer science and technology of the full picture needs to start from the internal strength.
1. Basic Competencies
1.1 Mathematics
Many programmers who do applications will feel that mathematics is largely useless because they are largely unused in the system. But in fact mathematics is the cornerstone of the whole computer, so the understanding of mathematics is indispensable. If is engaged in the machine study, the data mining, the computer graphics more needs the strong mathematics foundation.
- Specific mathematics: "Concrete Mathematics-Basic computer science" https://book.douban.com/subject/21323941/
- Probability theory and Statistics: the basic course of probability theory https://book.douban.com/subject/1803862/
- Discrete Mathematics: "Discrete Mathematics and its application" https://book.douban.com/subject/3125432/
- Linear algebra: "Linear algebra and its Applications" https://book.douban.com/subject/1425950/
- Advanced Mathematics: "Thomas Calculus" https://book.douban.com/subject/1231399/
1.2 English
English is the most important language for programmers, most of the technical books, agreements, conferences and so on are English, so need to understand first-hand information needs a strong English reading and writing skills, English learning is a gradual process, can use fragmentation time to learn.
- English methodology: "Put your English together" https://book.douban.com/subject/3748247/
- Learning materials: "Lai from the beginning of the American Language series"
1.3 Language expression
Language expression is mainly written and verbal, it is necessary to develop a rigorous and fluent language expression ability. This is mainly to write more practice, such as in the blog Park to write articles (as I am now), and colleagues and friends to communicate with the beautiful.
2. Computer Organization and architecture
The organizational structure of computer system, based on von Neumann model, is the hardware foundation of computer.
Core Knowledge points
- Machine representation of the data
- Assembly-Level machine Organization
- Interfaces and communications
- Storage System
- Multi-processor
Reference books
- Computer architecture: "In-depth understanding of computer systems" https://book.douban.com/subject/1230413/
3. Algorithms and data structures
Many people think that the application system does not need a data structure at all, the high-level language has been packaged well, do not need to learn. This question is analogous to the ability to master tools if only the bricks and walls of the building are done. But if you want to design a building, physics must be learned.
Core Knowledge points
- Algorithm strategy:
穷举算法
,,, 贪心算法
分治算法
回溯法
,数值逼近
- Basic algorithms:
查找算法
,,, 排序算法
哈希表
图算法
,最小生成树
- Basic data structure:
列表
, 树
,图
Reference books
category |
Books |
Difficulty |
Degree of importance |
Data structure and algorithm analysis |
"Data structure and algorithm analysis" https://book.douban.com/subject/1139426/ |
So so |
Intensive reading |
Introduction to Algorithmic Description Language |
"C and Pointers" https://book.douban.com/subject/3012360/ |
So so |
Intensive reading |
Explain why the "C and pointers" are put here, because the personal feel that all algorithms and data structure Description Language C is the most cool one (not one), and in "C and pointers" not only to explain the C language, more simple data structure and algorithm to explain, very beautiful. It is recommended that you read this book before you formally study data structure and algorithmic analysis.
4. Operating system
Many concepts in the operating system need to be understood, such as processes, threads, and resource mutexes, which are needed in many areas of real-world development.
Core points:
- Memory management
- Device Management
- Scheduling algorithm
- Concurrency of
Reference books
category |
Books |
Difficulty |
Degree of importance |
Operating system principles |
"Modern operating System" https://book.douban.com/subject/3667744/ |
More difficult |
Extensive reading |
5. Computer network
The development of computer and remote communication network, especially based on TCP/IP network, makes networking technology very important.
Core Knowledge points
- Network tiering (TCP/IP 4 layer structure)
- Network transport Security
- HTTP protocol
Reference books
category |
Books |
Difficulty |
Degree of importance |
Network |
"Computer network" https://book.douban.com/subject/1179807/ |
More difficult |
Extensive reading |
HTTP protocol |
"Graphical HTTP protocol" https://book.douban.com/subject/25863515/ |
Simple |
Intensive reading |
6. Information Management
Information management technology is very important in all fields of computer, including information acquirement, information digitization, information representation, information organization, information transformation and information expression. Efficient access algorithms and storage information updates, data modeling and data abstraction, and physical file storage techniques.
Core Knowledge points
- Data modeling
- Database system
- relational database system (MySQL best)
Reference books
category |
Books |
Difficulty |
Degree of importance |
Database Basics |
"Database system Concept" https://book.douban.com/subject/1929984/ |
More difficult |
Extensive reading |
MySQL Database |
"High performance MySQL" https://book.douban.com/subject/4241826/ |
So so |
Intensive reading |
7. Developing languages and frameworks (for example, the. NET platform)
This is the main application area, this article takes the. NET platform as an example.
Core Knowledge points
- Clr
- Object-Oriented Programming
- Web programming
Reference books
category |
Books |
Difficulty |
Degree of importance |
Virtual machine Technology |
"CLR via C #" https://book.douban.com/subject/4924165/ |
More difficult |
Intensive reading |
Object-Oriented Programming |
"Agile Software Development C # version" https://book.douban.com/subject/1140457/ |
So so |
Intensive reading |
C # language |
"In-depth analysis of C #" https://book.douban.com/subject/4822302/ |
So so |
Intensive reading |
|
"C # and. Net4 Advanced Programming" https://book.douban.com/subject/6062550/ |
So so |
Intensive reading |
asp |
"ASP." Advanced Program Design https://book.douban.com/subject/6428937/ |
So so |
Intensive reading |
Javascript |
The JavaScript Authority guide https://book.douban.com/subject/10549733/ |
So so |
Intensive reading |
|
JavaScript mode https://book.douban.com/subject/11506062/ |
So so |
Intensive reading |
|
The essence of JavaScript language https://book.douban.com/subject/3590768/ |
So so |
Intensive reading |
Html&css |
Website |
Simple |
Intensive reading |
8. Software Engineering
Software engineering disciplines involve the application of the theory, knowledge, and practice needed to efficiently build software systems that meet customer needs. Software engineering is suitable for the development of a variety of systems, including requirements analysis and specification, design, construction, testing, operation and maintenance of software system life cycle of all stages. Software engineering uses engineered methodologies, techniques, and metrics that use tools developed by management software, analytical and modeling tools for software products, quality assessment and control tools, and tools that ensure a methodical and controlled implementation of software evolution and reuse. Software can be developed by individual developers or development teams who choose the tools, methods, and approaches that are best suited to the development environment. Quality, schedule, cost and other software engineering elements are very important to the production of software systems. Core Knowledge points
- Software Design
- Software Process
- Software project Management
Reference books
category |
Books |
Difficulty |
Degree of importance |
Software Design |
"Head First design mode" https://book.douban.com/subject/2243615/ |
So so |
Intensive reading |
|
"Enterprise Architecture Model" https://book.douban.com/subject/4826290/ |
So so |
Intensive reading |
Software |
"Software Engineering" https://book.douban.com/subject/6047742/ |
So so |
Intensive reading |
Project Management |
"How to Manage software Enterprise" https://book.douban.com/subject/4178846/ |
So so |
Extensive reading |
Project Management |
"Software project management and agile Methodologies" https://book.douban.com/subject/4837350/ |
So so |
Intensive reading |
Ii. Methods of Learning
To learn the above knowledge by rote memorization is not possible, to have a scientific approach, the following books include scientific methods of learning.
category |
Books |
Difficulty |
Degree of importance |
Learning methods |
"Holistic Learning" https://book.douban.com/subject/25783654/ |
So so |
Intensive reading |
Reading methods |
"How to read a book" https://book.douban.com/subject/1013208/ |
So so |
Intensive reading |
Time Management |
"Another 8 hours" https://book.douban.com/subject/10535830/ |
So so |
Intensive reading |
|
"Take time as a friend" https://book.douban.com/subject/5171244/ |
So so |
Intensive reading |
Meditation Practice |
"Mindfulness meditation" https://book.douban.com/subject/23037911/ |
So so |
Intensive reading |
Third, PostScript
The above books are computer science needs to learn the collation of books, some have seen, there are many have not seen or not read, and because of limited knowledge there are many books or knowledge points no examples. I hope we can have more friends to improve this book list, so that each of us can enjoy the joy of knowledge .
I believe that as long as reasonable use of time, persist in learning, in addition to scientific methods, will be able to obtain more and more knowledge, the same wealth will follow.
The source of the handsome insects: http://www.cnblogs.com/vipyoumay/p/5681982.html
. NET programmer to high-end must read a single summary