List sách (update 11.4.2014)

Mình xin giới thiệu một số đầu sách hay mà mình nghĩ rất cần thiết

Link Dropbox (Mới có một số quyển ở đây, các quyển còn lại mình sẽ tìm và up dần, nhưng nếu mọi người có thể chủ động tự tìm được thì cũng tốt vì mình rất lười):

[Sách trên Dropbox – Vì vấn đề bản quyền nên mình đã gỡ link. Ai muốn bản mềm quyển nào thì email cho mình qua contact@linhkid.com mình sẽ gửi qua email. Mong mọi người thông cảm]

**A. Về Computer Science**

*I. Thuật toán & Cấu trúc dữ liệu:*

1 – Algorithms – Robert Sedgewick, Kevin Wayne

Cuốn này trình bày dễ hiểu nhất và trực quan nhất (bằng ngôn ngữ Java). Không đòi hỏi người đọc phải có background sâu về Toán. Cover đủ hết các bài toán cơ bản (và 1 vài thuật toán nâng cao). Cá nhân mình highly recommend cuốn này.

2 – Introduction to Algorithms – Thomas H. Cormen

Đây là cuốn kinh điển, gối đầu giường của rất nhiều thế hệ sinh viên CS, CE, SE, ICT v.v… Ưu điểm và nhược điểm của nó đều là quá chi tiết và hàn lâm. Nếu ai muốn tìm hiểu nhanh, mang tính thực hành cao mà vẫn có tầng tư duy tốt thì hãy đọc cuốn 1. Còn nếu có thời gian mà muốn đào sâu thì hãy đọc quyển này. Tuy nhiên hầu hết các thuật toán trong cuốn này đều được trình bày bằng Pseudo-code.

3 – The Art of Computer Programming, Volumes 1-4A Boxed Set – Donald E. Knuth

Series này được mệnh danh là kinh thánh (Bible) trong lĩnh vực Computer Science. Mọi người nên order hoặc nên download bản tiếng Anh vì đây là bản hay nhất, đầy đủ nhất và thường xuyên được cập nhật, chỉnh sửa. Khá khó đọc, nhưng rất thú vị, xuất sắc.

*II. Xử lý ngôn ngữ tự nhiên:*

1 – Foundations of Statistical Natural Language Processing – Christopher D. Manning

Một cuốn sách thuộc dạng must-have về NLP. Cuốn này chủ yếu trình bày các kỹ thuật từ cơ bản đến nâng cao trong xử lý NN tự nhiên. Nếu ai muốn tìm hiểu sâu về kỹ thuật và có background khá về Toán thì nên đọc. Còn ai thích dùng tool thì chắc không cần lắm.

2 – Taming Text: How to Find, Organize, and Manipulate It – Grant S. Ingersoll, Thomas S. Morton, Andrew L. Farris

Đây là cuốn sách mang tính thực tiễn cao, nằm trong series mới nhất của Manning Publication. Quyển này không đòi hỏi người đọc phải có kiến thức chuyên sâu về Toán. Cuốn này bao gồm các kỹ thuật cơ bản trong NLP và Text mining như Fuzzy String matching, clustering text, Identify name, etc…

*III. Recommendation & Suggestion:*

1 – Algorithms of the Intelligent Web – Aralambos Marmanis, Dmitry Babenko.

Lại một đại diện xuất sắc nữa của Manning Publications. Cuốn này sẽ giới thiệu các thuật toán cần có để xây dựng các Web thông minh (như thế hệ Semantic web hoặc Web 2.0), ví dụ như recommendation + suggestion, Page rank và K-means. Cực kỳ dễ hiểu và mang tính thực tiễn cao.

2 – Programming Collective Intelligence: Building Smart Web 2.0 Applications – Toby Segaran

Cuốn này chi tiết hơn cuốn trên 1 chút, mặc dù hàm lượng kiến thức thì cũng không chênh nhau quá nhiều. Hay hơn cuốn trên, chỉ có điều là viết bằng Python.

3 – Recommender Systems Handbook – Francesco Ricci

Như title, chỉ tập trung vào recommendation chứ không có search optimize, crawlers, indexers, etc. Mình biết quyển này vì hôm trước có một anh nào vào viện trường cứ đòi tìm quyển đó, mình tò mò lên mạng thấy feedback rất tốt nên list vào đây luôn.

*IV. Data Mining & Data Analytics & Data Science:*

(Mình xin phép gộp chung vào để đỡ bị chia ra nhiều mục quá chứ thực chất 3 mục này khác nhau kha khá ạ)

1 – Data Mining: Practical Machine Learning Tools and Techniques – Ian H. Witten

Hay, chi tiết và đầy đủ các kiến thức cần cho những người mới làm về Data Mining và Data Analytics. Cuốn này có vài chapter trình bày về WEKA – 1 tool nguồn mở xuất sắc và rất hữu ích về Machine Learning based Data mining. Cuốn này không cần người đọc phải có background tốt về Toán, và chủ yếu giới thiệu đủ để có thể dùng tool.

2 – Introduction to Data Mining – Pang-Ning Tan

Cuốn này thì cực kỳ cơ bản và chi tiết. Nếu không quá cần kíp hoặc có thời gian nghiền ngẫm thì nên đọc cuốn này. Bản mình giới thiệu là bản mới nhất, đến cuối năm nay sẽ ra mắt. Phiên bản cũ hơn vẫn có thể mua được trên Amazon hoặc bookdepository

3 – Data Mining with Rattle and R: The Art of Excavating Data for Knowledge Discovery – Graham Williams

Cuốn này chủ yếu bao gồm các cách sử dụng Rattle và R (từ cơ bản đến nâng cao) trong khai phá dữ liệu và phân tích dữ liệu (chủ yếu là cách dùng tool), cho nên các kiến thức (mang tính lý thuyết) về Data Mining sẽ không được đề cập nhiều. Tuy nhiên rất hữu ích trong việc tra cứu, nhất là với bạn nào không quan tâm nhiều đến lý thuyết (hoặc đã biết quá rõ lý thuyết)

4 – Applied Predictive Modeling – Max Kuhn, Kjell Johnson

Khá cơ bản, đề cập đến các mô hình dự đoán đang được ứng dụng rộng rãi trong thực tế, kể cả từ những bước cơ bản nhất như tiền xử lý dữ liệu cho đến regression và phân loại (classification). Một yêu cầu là người đọc cần có 1 chút kiến thức về R và toán học, chủ yếu là thống kê.

5 – Data Science for Business: What you need to know about data mining and data-analytic thinking – Foster Provost, Tom Fawcett

Đơn giản, cơ bản, dễ hiểu và dễ áp dụng. Mình không phải là người máu tìm hiểu về Business analytics lắm, tuy nhiên cuốn này đã làm cho mình nghĩ khác đi. Rất nhiều study cases thú vị giúp người đọc dễ hình dung các lý thuyết, kỹ thuật khô khan của khai phá dữ liệu và phân tích dữ liệu áp dụng vào business như thế nào. Không hề khó đọc, không yêu cầu có background chuyên sâu về KHMT hay Toán.

*V. Machine Learning & Soft Computing & AI*

1 – Machine Learning – Tom Mitchell

Cơ bản và kinh điển cho những ai bắt đầu tìm hiểu về học máy. Mua ở Amazon hiện tại thì hơi bị đắt nên các bạn có thể lên bookdepository để đặt mua (free ship toàn cầu), các chương mới hiện tại có thể tải về ở link mình đưa ra ở trên.

Cuốn này đọc tương đối dễ hiểu và trình bày cũng khá tốt nên không cần phải có background về Toán hay thuật toán quá nhiều. Cover khá rộng (tuy không được sâu) về các chủ đề cơ bản như Decision Tree learning, Reinforcement Learning, Bayesian learning, Evaluating hypothesis cho đến Neural network, thuật toán di truyền v.v…

2 – Pattern Recognition and Machine Learning – Christopher M. Bishop

Tương đối khó đọc, khá nặng về Toán. Cover tương đối đầy đủ từ mô hình tuyến tính, phân bố xác suất, Kernel method cho đến Neural Network, Support Vector Machine v.v…

3 – Artificial Intelligence: A Modern Approach – Stuart Russell and Peter Norvig

Cơ bản, thú vị, lôi cuốn. Rộng nhưng không sâu. Ai mới tìm hiểu về học máy và trí tuệ nhân tạo thì rất nên đọc cuốn này.

4 – Pattern Classification – Richard O. Duda, Peter E. Hart

Xuất sắc. Các kiến thức được giải thích khá rõ ràng, đầy đủ, người đọc nếu chưa đủ kiến thức vẫn có thể hiểu được chứ không như cuốn Pattern Recognition khó đọc hơn. Tương tự như các đầu sách về học máy khác, cuốn này bao gồm các chủ đề về neural network, thuật toán di truyền, các lý thuyết học máy, stochastic methods…

(Mua ở đây sẽ rẻ hơn rất nhiều so với Amazon)

5 – Learning and Soft Computing – Vojislav Kecman

Cuốn này không nổi tiếng bằng các cuốn trên, tuy nhiên cá nhân mình thấy rất hữu ích cho những ai mới tìm hiểu về máy học và trí tuệ nhân tạo. Rất đáng đọc.

6. The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition

Rộng và đầy đủ. Tốt nhưng không quá xuất sắc. Bao gồm neural network, boosting, tree, SVM, Random Forests; từ supervised learning (dự đoán) cho đến unsupervised learning etc…

*VI. Mathematics & Statistics*

1 – Concrete Mathematics: A Foundation for Computer Science (2nd Edition) – Ronald L. Graham, Donald E. Knuth, Oren Patashnik

Cuốn cơ bản về CONtinuous và disCRETE Mathematics giúp mình có background chuyên sâu hơn về Toán khi làm CS và SE. Tuy nhiên đây không phải là quyển dễ đọc.

**B. Về Software Engineer**

*I. Design Pattern & OOA&D:*

1 – Design Patterns: Elements of Reusable Object-Oriented Software – Erich Gamma

Cuốn kinh điển về Design pattern, tuy nhiên tương đối khó, trừu tượng, đòi hỏi người đọc cũng phải biết chút khái niệm về DS trước khi đọc.  Những người đã có thời gian tiếp xúc và làm việc trong môi trường enterprise sẽ dễ dàng hấp thụ hơn là những bạn mới học, mới làm.

2 – Head First Design Patterns

Ngược hẳn với cuốn kia, cuốn này cơ bản, dễ hiểu, dễ đọc hơn và thậm chí có cả hình minh họa. Rất nên đọc với những người mới bắt đầu.

*II. Software Architecture:*

1 – Patterns of Enterprise Application Architecture – Martin Fowler

Một cuốn sách gối đầu giường của bất kỳ ai muốn tìm hiểu về Enterprise Application Architecture.

2 – The Architecture of Open Source Applications – Nhiều tác giả

Nhiều chủ đề hay, thời sự nhưng không phải bài nào cũng hữu ích. Tuy nhiên vẫn rất có giá trị cho những ai đang làm start up hoặc muốn hiểu sâu hơn về kiến trúc phần mềm.

*III. Programming skill & Software Construction:*

1 – Code Complete: A Practical Handbook of Software Construction, 2nd Edition – Steve McConnell

Đừng tưởng giỏi thuật toán đã là xong. Vì đây không còn là cuốn sách dạy mình làm thế nào để giải bài toán kia, mà tổng quát hơn – code thế nào, tối ưu hóa code thế nào, cách trình bày, refactoring, etc.

2 – Clean Code: A Handbook of Agile Software Craftsmanship – Robert C. Martin

Tương tự với cuốn trên, cũng là dạy về cách trình bày, cách viết code, thế nào là code tốt, thế nào là code tệ, dễ đọc hay không, tên biến, tên hàm, tên class có dễ hiểu hay không; cho đến xây dựng unit test sau này.

*IV. Java Programming:*

1 – Effective Java – Joshua Bloch

Hãy xem Jame Gosling (cha đẻ của Java) nhận xét như thế nào về cuốn này:

“I sure wish I had this book ten years ago. Some might think that I don’t need any Java books, but I need this one.”

2 – Introduction to Programming in Java: An Interdisciplinary Approach – Robert Sedgewick

Là tác giả của cuốn Algorithms nổi tiếng, nhưng ông vẫn tiếp tục viết cuốn này với những kiến thức rất cơ bản và chuyên sâu về cấu trúc dữ liệu trong Java. Rất tốt cho những người mới tìm hiểu hoặc những người đã là Java dev lâu năm nhưng vẫn chưa tự tin lắm về kỹ năng của mình.

**DISCLAIMER**: Đây là review cá nhân của mình nên nhiều quan điểm sẽ không được khách quan. Hơn nữa mình cũng không phải chuyên gia hay ai đó giỏi giang mà chỉ đơn giản là một người vẫn đang phải học rất nhiều thứ, nên một số góc nhìn có lẽ sẽ phiến diện.

Advertisements

3 thoughts on “List sách (update 11.4.2014)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s