"Turn" to the computer professional college students finishing the book list

Source: Internet
Author: User

Nothing to do, the use of large half a day to the computer curriculum and the view of a book, hoping for the current still confused college students have help. (reproduced please specify the source)
I recommend more than 97% of the books are foreign books, domestic university textbooks still do not look. Remember, remember!0.000 Introduction to Computer scienceTeaching materials: 1. Encoding: The language behind the hardware 2. "Psychic Chip" 3. "D is for digital:what a well-informed person should know about computers and communications "The Secret of Turing: his Life, Thoughts and essays"Fundamentals of Computer mathematics 0.001 calculusTeaching materials: 1. Recommend to see MIT's Public Course "calculus focus" 2. "What Mathematics: basic research on ideas and methods" 3. Introduction to Calculus and mathematical analysis0.002 linear algebraTeaching materials: 1. Recommended Meng Yan's blog "Matrix series" Google keyword "Meng yan" "Matrix" to enter the blog 2. Recommended MIT's Public course "linear algebra" 3. Recommended book "Linear Algebra" author Gilbert Strang, only to see the electronic version of the. Not introduced0.003 probability theoryTeaching materials: 1. Recommended introduction to the probability of the MIT 2. "Statistical thinking: the probability statistics of programmers ' mathematics" PS: The mathematical analysis, stochastic process, and other advanced courses are good to repeat.0.004 Discrete Mathematics based on computer scienceTeaching materials: 1. Discrete mathematics and its application0.005 Combinatorial Mathematics of basic advanced computer ScienceTeaching materials: 1. Combinatorial mathematics0.006 Specific Mathematics of advanced computer Science FundamentalsTeaching materials: 1. "Specific Mathematics" PS: This book is more difficult, Dr. Hkust's compulsory course. This book is recommended because if you don't finish reading this book, how can you have the opportunity to appreciate the Knuth God for the "Computer Programming art" series? Although the great God Knuth wrote in TAOCP that there is high school mathematics to understand, but in my personal experience I do not seem to be able to do.Fundamentals of Computer Programming Fundamentals 0.007a ProgrammingTeaching materials: 1. "Little Scheme" 2. "How to Design program"0.007b Programming PrinciplesTeaching materials: 1. "The construction and interpretation of computer program design" English name "the Structure and interpretation of computer programming", referred to as "SICP" in the lake, called "Magic Book" 2. Concepts, Techniques, and Models of computer programming PS: If you read SICP do not do inside the exercise is simply throwaway, wasted. Recommended MIT's Public course "Introduction to Computer science and programming" although they replaced scheme with Python.0.008 C language Programming FundamentalsTeaching materials: 1. Science and Art of C language 2. The abstract thinking of C programming 3. C Language Programming K&r Advanced Textbook: 1. C Expert programming 2. C Language Interface and implementation: creating reusable Software technology0.009 assembly Language ProgrammingTeaching materials: 1. "Assembly language" Wang Shuang this may be the only textbook in the Book of Chinese WritingC + + programming for object-oriented programmingTeaching materials: 1. "Thining in C + +" 2. "C + + Primer" 3. Effective C + + 4. "In-depth exploration of the C + + object Model" Ps:c++ 's classic textbook is too much. Maybe I can list 20 originally, but the beginner is the first to lay a good foundation.Java ProgrammingThere are many training organizations on the market Java video, some videos speak really good, you can look for some. Teaching materials: 1. Thinking in Java 2. Effective Java 3. Practical Java 4. "In-depth understanding of Java Virtual Machine" 5. "Java Concurrency Programming Practice"Computer core specialized courses data structure and algorithm:Teaching materials: 1. Algorithm: C language Implementation (1th to 4th) basic knowledge, data structure, sorting and search 2. Algorithm: C Language Implementation (part 5th) graph algorithm or 3. Algorithm Fourth edition (Java description) (The book Red Black Tree speak of the odd like CLRs good hundred) 4. Introduction to Algorithms: a creative approach (a good book that is overlooked, as the preamble says, if you don't have the time to read the fifth chapter directly)
5. "Programming Zhu Ji Nanxiong"
6. "Algorithm Introduction" a not thick algorithm book, author devotes, Abas. The explanation for the dynamic programming is great! 7. "The beauty of programming" a very good exercise bookalgorithm analysis and DesignTeaching Materials: 1. Introduction to Algorithms: a creative Approach 2. Introduction to Algorithmsprogram design and computer systemTeaching materials: 1. In-depth understanding of computer systemsComputer networkTeaching materials: 1. Head first Network 2. TCP/IP Detailed Volume One: Agreement 3. Computer network: Top Down methodoperating system (can be split into two separate courses)Teaching materials: 1. "Modern operating System" 2. "Operating system: Essence and Principles of design" 3. "Leon's Unix Source code Analysis" 4. "Unix System on Modern architecture--the SMP and caching Technology of kernel programmer" 5. "Principles of computer system Design" 6. "Unix Programming Art" 7. "Bird Brother's Linux private dishes" Make your hands dirty, learn how to use the operating system bar, all kinds of names, shell ^_^ listen to foreign friends speak, after learning abroad students can write a miniature operating system kernel.Linux/unix Programming Practices:1. Advanced Programming for the UNIX Environment 2. UNIX Programming Environment 3. "Linux/unix Programming Practice Textbook" (This book is more suitable for beginners)DatabaseTeaching Materials: 1. Introduction to Database Systems 2. Database System ConceptsComputer ArchitectureTeaching materials: 1. Computer architecture: A Quantitative approach to researchSoftware Engineering:I was shocked when Xin Zou teacher used the lecture in Zhong Ke. Http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html1. Myth of Man and Month 2. Code Encyclopedia 3. The Art of UNIX programming 4. "Dream Break Code" 5. The way programmers do it: from the handyman to the expertData Mining and machine learningMathematical fundamentals are good, especially in statistics, and linear algebra may also require more advanced stochastic process knowledge: 1. Machine learning in Action 2. "Collective Intelligence Programming" 3. Recommended Stanford "Computer Learning public class" 4. Statistical thinking: Probabilistic statistics of programmers ' mathematicsNetwork Programming:1. TCP/IP Detailed: Volume One 2. UNIX Network Programming (Volume 1): Socket networking API 3. UNIX network Programming. Volume 2: Interprocess communication (2nd edition) 4. Java Concurrency Programming Practice 5. HTTP Authoritative GuideCompilation PrincipleI have studied the principle of compiling in the university, and at Hkust I have learned that the most tormenting of all courses is the course of compiling principles. Teaching materials: 1. "Compiling principle": "Dragon book" in the River Lake 2. "The Compiling principle": "Tiger book" in the River-Lake, 3. There is also a "whale book" in the World of the 4. "Programming language Implementation Mode" a more "practical" Book 5. Programmer self-accomplishment: compiling, linking, and library The Chinese have written another good book in recent years. An excellent course of compiling principles, students can make a simple compiler after learning. At Hkust, we had exactly five experiments. Finally, a simple compiler is implemented.design mode:Not recommended for beginners to see GOF's "design Mode" textbook: 1. "Big Talk Design Mode" Chinese written a good book, C # description 2. "Design mode" Head first series 3. "Agile Software Development principles: Patterns and Practices" C++/java description 4. Refactoring: Improving the design of existing code 5. Refactoring and Patterns 6. Reconstruction and Handbook 7. Well, finally, look at Gof's "design mode".Finally, everyone read the beauty of mathematics, a very good book. Graphics, cyber security, and other areas of the curriculum laterOther Topics1. The struggle for programming languages:Many of the college students in the end to learn which language, which language is better. In fact, the language is not good or bad, "ruler has short inch." This is like I asked "whether the hammer is strong or the fruit knife is bad", if it is used to cut apples, of course, the fruit knife is bad. If it is used to smash stones, of course, the hammer is bad. Each programming language has its own application scenario, my suggestions are as follows: 1. Learn C language 2. Learn a traditional object-oriented language C + +, C #, Java can be, according to their own preferences to 3. Learn a functional language, such as Schme,f#,common lisp,ml and so on. I recommend learning scheme here, because "SICP", "HODP" and its excellent books are all 4 of programming ideas in scheme terms. Learn a dynamic language such as Pyton,ruby and so on. I personally prefer python now a lot of people will say "programming language is not important, the important thing is thinking", in fact, I do not fully agree. Go into a language program, but don't stick to a language. A good college should have a curriculum that contains the languages of these different programming paradigms, such as when I was studying in the data mining class in Python, in compiling an engineering class for ML, and in the formal methodology of F #, we also had a lesson in dynamic language Ruby. Of course, there are specialized practical classes Java EE Platform, C#.net platform, and so on. Computer science is a very strong practice, there is no cumulative amount of code is not possible. 10W line, yes, I hope everyone in the undergraduate four years can accumulate 10W lines of code. There is no need to read the research. If you read most of the books in this book.2. Reading English book or translationEveryone read my list of recommended books to know, I have written in Chinese names. This does not mean that I do not recommend people to read the original English. My point is that when you enter a new area the first one often depends on the Chinese version of the translation, because the English version of the many terms you can not understand, so progress will be slow, to combat confidence. Anyway, I am this, I learn any unfamiliar field of the first book to see the Chinese translation, the future of the book is basically if the translation of a good look at the Chinese version, typical such as "UNIX Programming Art" translation is very good. Translation is not good on the English version, such as the compilation Principle of the "Tiger book" in the Java Description version of the translation of the odd difference, can only see the English version.3. Is it enough to have these book lists? No, it takes a lot of hands-on practice to learn a course, especially in computer science. A good course often comes with a great experimental course. For example, "in-depth understanding of the computer system," the experiment is very good, I was most impressed by the number of "binary bombs". At that time we were all in the demolition of bombs, demolition of the joy. It can be seen that the teachers of the CMU designed these experiments very carefully, but what about Chinese education? There are very few original courses to take, right? College teachers, you teach students with dim sum! Boys and girls, you should learn with dim sum.
If you are a working family then read the section marked in red.
Last but not the least book, there are still slip through the future to fill. There is still a lot of work to be done on hand, and this sign off. If you have any questions or suggestions, you can contact me. Email:[email protected]
Add:
I believe that a lot of the younger brother learns to see this book may produce a feeling, learn a technology to see so many books? The answer is necessary! Because even a very good book has a different focus on the elaboration of a knowledge point. To give a very simple example, two-point lookup. People with programming experience must know what "binary search" is, and any book that describes the data structure algorithm will speak, and many people think they understand. Okay, here's a look at your understanding of binary search. All of the questions revolve around "binary search expansion".

If the interviewer asks you this:
Q1: Please describe the idea of two-point search.
Answer:alabla, many people can say it.

Q2: What is the return value of the binary lookup?
Answer:

Q3: Please write the complete binary search code on the paper. (Recursive, non-recursive version)
Answer: (Can you guarantee that you can write right?) 90% of programmers write wrong)

Q4: Can you write a test case for your binary search?
Answer: (Can you guarantee that you can write a good test case?) )

Q5: Can you prove that your binary search is right?
Answer: (cyclic invariant?) )

Q6: I'm going to make a few changes to the title: given an ordered array (ascending) Arr, the largest I makes Arr equals V and does not exist returns -1.
Answer: Can you write it right?

Q7: According to the above description I now require the smallest I so that arr equals V, does not exist then returns-1.
There's a lot more ....

How do you find the answers to these questions?
A book is certainly not enough. You can find the answers to these books:
any book that tells the data structure algorithm to find the concept of binary search.
Johua Bloch's Blog "Extra Extra extra:nearly all the BinarySearch and MergeSort is broken"
or jdk1.5 java.util.Arrays find the source code for the error binary lookup, jdk1.6 find the correct source
"Programming Zhu Ji Nanxiong" Look for answers to immutable questions
"The beauty of programming" looking for variants of related topics
The beauty of code seeks to find the answer to a design test case for two points.
The invariant design can also be found in the Go Language class library.
all right, that's scary.

"Turn" to the computer professional college students finishing the book list

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.