Học Khoa Học Máy Tính nên đọc sách gì?

Bạn trantempo hỏi một danh sách các sách nên đọc trong KHMT. Bạn Nguyên đã đưa một danh sách sơ bộ. Tôi sẽ cập nhật từ từ vào danh sách dưới đây trong một vài tuần tới để có một danh sách hoàn tất hơn. (Cần về nhà duyệt lại tủ sách). Các bạn có thể bình luận và thêm vào các quyển sách mà bạn ưa thích.

  1. Phân tích thiết kế thuật toán cơ bản
  2. Phân tích thiết kế thuật toán nâng cao
  3. Combinatorics (bao gồm lý thuyết đồ thị và toán rời rạc)
  4. Xử lý ngôn ngữ tự nhiên (danh sách của anh Bạch Hưng Nguyên)
  5. Machine learning và statistics (danh sách của anh Nguyễn Xuân Long)
  6. Databases (anh Đoàn An Hải giới thiệu)

1. Phân tích và thiết kế thuật toán (cơ bản): hiện nay có 3 quyển textbooks được dùng khá phổ biến, trong đó tôi thích quyển của Kleinberg và Tardos nhất. Tuy nhiên, từ quan điểm cá nhân thì tôi chưa thấy hài lòng với cả 3 vì các lý do khác nhau, mặc dù cả ba quyển đều rất tốt.

  • Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, and Clifford Stein, Introduction to Algorithms (2e), 1180pp, ISBN: 0262032937, MIT Press, September 2001.
  • Jon Kleinberg, Éva Tardos, Algorithm Design, 864 pages, Addison Wesley, ISBN-10: 0321295358, ISBN-13: 978-0321295354, March 16, 2005.
  • S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani, Algorithms, McGraw Hill, 2007.

Hồi trước có quyển của Aho-Hopcroft-Ullman. Bây giờ đã khá lỗi thời, ít ai dùng.

  • Alfred V. Aho John E. Hopcroft Jeffrey Ullman, Data Structures and Algorithms, 427pp. ISBN: 0201000237, Addison Wesley, January 1983.

Tiếc rằng Robert Tarjan không viết sách giáo khoa, nếu không sách về data structure của ông hẳn phải rất hay.

Hiện nay không thể dạy thuật toán cơ bản mà không dạy về NP-Completeness và các phương pháp xác suất. Do đó, các quyển sau đây cũng rất cần thiết:

  • Michael R. Garey and David S. Johnson, Computers and Intractability: A Guide to the Theory of NP-Completeness, 338pp. ISBN: 0716710455, W. H. Freeman Company, November 1990.
  • Michael Mitzenmacher and Eli Upfal, Probability and Computing: Randomized Algorithms and Probabilistic Analysis, Cambridge University Press (January 31, 2005)

Tôi xếp 3 tập của Knuth vào dạng “cao cấp hơn”, trong trường hợp bạn đang thắc mắc. Về lecture notes (dạng presentation) thì tôi thấy notes của … tôi khá tốt 🙂 (từ từ đến cuối học kỳ sẽ có toàn bộ notes.)

2. Phân tích và thiết kế thuật toán (cao cấp hơn)

Khi nói đến phân tích và thiết kế thuật toán cao cấp, ta thường phải xem xét các đề tài cụ thể để giới thiệu. Các quyển sách cao cấp thường được viết về một đề tài nào đó: approximation algorithms, randomized algorithms, linear programming, convex programming, approximate counting, combinatorial optimization, network flows, algorithmic game theory, vân vân. Tôi sẽ gộp chung chúng lại và giới thiệu một vài quyển tiêu biểu.

  • Donald Knuth, The Art of Computer Programming Volumes 1, 2, 3, Addison Wesley.
  • Vijay Vazirani, Approximation Algorithms, Springer-Verlag, 397 pages hardcover, ISBN: 3-540-65367-8, published 2001.
  • Rajeev Motwani and Prabhakar Raghavan, Randomized Algorithms, 492 pages, Cambridge University Press (August 25, 1995), ISBN: 0521474655
  • Vašek Chvátal, Linear Programming, W. H. Freeman, 1983; 478pp. ISBN: 0716715872, W. H. Freeman Company, January 1983.
  • Dorit Hochbaum (Editor), Approximation Algorithms for NP-Hard Problems, 624 pages ; Brooks/Cole Pub Co; ISBN: 0534949681; 1st edition (July 26, 1996)
  • Alexander Schrijver, Theory of Linear and Integer Programming, 484pp. ISBN: 0471982326, Wiley, John & Sons, Incorporated, June 1998.
  • Christos H. Papadimitriou and Kenneth Steiglitz, Combinatorial Optimization: Algorithms and Complexity, Dover Publications; Unabridged edition (January 29, 1998).
  • Mark Jerrum, Counting, Sampling and Integrating: Algorithms and Complexity (Lectures in Mathematics. ETH Zürich), Birkhäuser Basel; 1 edition (April 28, 2003)
  • Ravindra K. Ahuja, Thomas L. Magnanti, and James B. Orlin, Network Flows: Theory, Algorithms, and Applications, Hardcover, 1st ed., 846pp., ISBN: 013617549X, Prentice Hall, February 1993.
  • Noam Nisan, Tim Roughgarden, Eva Tardos, and Vijay V. Vazirani (editors), Algorithmic Game Theory, Cambridge University Press, 2007.
  • Mark de Berg, M. van Krefeld, M. Overmars, and O. Schwarzkopf, Computational Geometry: Algorithms and Applications, Second Edition, Springer; 2nd rev. ed. edition (February 18, 2000).

Đây là tôi hoàn toàn chưa đụng tới rất nhiều các đề tài quan trọng khác: algorithmic number theory, algorithmic coding theory, computational biology, v.v.

Chú ý: Ngoài ra, không thể nghiên cứu thuật toán hiện đại mà không có hiểu biết sâu sắc về lý thuyết độ phức tạp (computational complexity theory), lý thuyết đồ thị và toán rời rạc, lý thuyết xác suất và lý thuyết thông tin, toán tối ưu và toán ứng dụng, thậm chí cả hình học và giải tích cơ bản (cần cho computational geometry), hay lý thuyết số (cần cho các thuật toán cryptography). Tôi sẽ giới thiệu vài quyển về các đề tài này trong vài ngày tới.

3. Combinatorics (bao gồm lý thuyết đồ thị và toán rời rạc). Combinatorics rất rộng, liên quan mật thiết đến rất nhiều nhánh khác nhau của toán học và khoa học máy tính. Dưới đây tôi chỉ liệt kê một sanh sách các sách tôi đã đọc và thấy hữu dụng trong nghiên cứu và trong phát triển tư duy toán học cho KHMT. Nghĩa là không kể những thứ hữu dụng mà tôi không biết gì cả như Additive Combinatorics của bác Terry Tao và bác Vũ Hà Văn.

3.1 Toán rời rạc phổ thông. Hiển nhiên sinh viên học KHMT phải biết toán rời rạc. Tuy nhiên, tôi cực kỳ khó chịu với loại toán rời rạc thường được dạy ở bậc đại học nói chung, vì hai lý do: (1) lớp toán rời rạc kiểu này không chuẩn bị đủ kiến thức cho sinh viên học thêm lên, (2) và nó cho sinh viên một bức tranh bèm nhèm về toán rời rạc, dễ làm sinh viên hiểu không đúng về tầm mức của toán rời rạc. Dĩ nhiên tôi hiểu rằng chương trình đại học thì có giới hạn, còn bể kiến thức thì vô cùng, do đó cái “khó chịu” này của tôi không có cơ sở, Chỉ nhân đây càm ràm để “xả stress” là chính.

Có bốn quyển sách “phải đọc” về toán rời rạc cho sinh viên học KHMT (và cả sinh viên toán):

  • J. H. van Lint and R. M. Wilson, A Course in Combinatorics, Cambridge University Press; 2nd edition (December 15, 2001). Rất tuyệt vời! Mỗi chương là một đề tài riêng biệt, từ đồ thị đến generating functions, từ design theory đến coding theory, từ q-series đến extremal set theory, v.v. đều có cả. Đa số các bài tập đều không tầm thường. Nếu bạn muốn biết combinatorics thật sự là gì, mà không có thời gian đọc nhiều quá, thì quyển này là bắt buộc!
  • Ronald L. Graham, Donald E. Knuth, Oren Patashnik, Concrete Mathematics: A Foundation for Computer Science, Addison-Wesley Professional. Viết bởi computer scientists cho computer scientists. Tất cả những thứ sinh viên KHMT cần biết về asymptotic analysis. Kiểu Knuth. Nghĩa là cực kỳ cụ thể và chi tiết về phương pháp. Dĩ nhiên, phạm vi của quyển này rất hẹp, vì đề tài và đối tượng rất cụ thể.
  • Laszlo Lovasz, Combinatorial Problems and Exercises, American Mathematical Society; 2 edition (June 26, 2007). Vừa ra 2nd edition. Cách duy nhất để học toán rời rạc là làm thật nhiều bài tập. Bạn hoàn toàn có thể trở thành một chuyên gia hạng ruồi về graph theory và extremal set theory bằng cách ngồi giải bài tập trong sách này. Nếu bạn đang lấy lớp combinatorics nào đó, nhiều khả năng là thầy của bạn lấy một vài bài tập trong này ra làm bài tập về nhà hoặc cả bài kiểm tra.
  • Martin Aigner, Günter M. Ziegler, and K.H. Hofmann, Proofs from THE BOOK, Springer; 3rd ed. edition (November 13, 2003). Tôi không biết là quyển này đã ra đến 3rd edition, tôi chỉ có 1st edition. Nói đúng ra, quyển này không phải viết về toán rời rạc. Nhưng tư tưởng của nó lại rất tương đồng với tư tưởng của toán rời rạc mà tôi cảm nhận. Khi thấy một chứng minh đẹp như mơ, Erdos hay nói rằng “chứng minh này chắc là phải nằm trong một quyển sách của thượng đế, quyển sách chứa các chứng minh đẹp nhất”. Đó là tư tưởng chính của quyển sách. Nó chứa một bộ sưu tập các chứng minh đẹp như mơ. Dân yêu toán, ai lại không mơ?

3.2 Lý thuyết đồ thị (bao gồm cả algebraic graph theory). Không có nhánh nào của KHMT mà lại không cần kiến thức cơ bản về lý thuyết đồ thị. Sách mở đầu của lý thuyết đồ thị thì có cực kỳ nhiều. Tôi vẫn thường giới thiệu quyển của West cho sinh viên vì thấy nó vừa phải và phù hợp với dân máy tính. Quyển bài tập của Lovasz ở trên có vài chương về lý thuyết đồ thị rất hay. Tôi quan tâm đến algebraic graph theory nó là công cụ chính để phân tích các expander graphs (dùng cực kỳ nhiều trong complexity theory, algorithm design, randomized algorithms, coding theory, networking, v.v.)

  • Douglas West, Introduction to Graph Theory, Prentice Hall; 3 edition (December 1, 2007). Tôi thấy phạm vi đề tài của quyển này rất thích hợp cho dân học KHMT, lại rõ ràng dễ hiểu. Sau khi đọc xong một quyển giới thiệu ngành như quyển này, các quyển kế tiếp đều phải đọc theo đề tài, như algebraic graph theory, extremal graph theory, graph coloring, matching theory, v.v.
  • Tommy R. Jensen and Bjarne Toft, Graph Coloring Problems, Wiley-Interscience; 1st edition (December 1994). Đây là tham khảo kinh điển về các bài toán tô màu đồ thị, dùng cực nhiều trong KHMT.
  • L. Lovász and M.D. Plummer, Matching Theory, Annals of Discrete Mathematics, 29, North-Holland Mathematics Studies, 121. Tôi tin rằng dân làm về graph theory và combinatorial optimization đều … bí mật đọc quyển này 🙂 Một đề tài rất đẹp và rất khó tìm thấy ở sách khác là về các Pfaffian và Permanent. Đặc biệt là về matching trên bipartite graphs thì tất cả những thứ tôi biết đều học từ quyển này ra, và đã dùng kiến thức học được trong ít nhất 5 bài báo!
  • Norman Biggs, Algebraic Graph Theory, Cambridge University Press. Quyển sách be bé này giới thiệu algebraic graph theory rất tốt. Đủ để dùng làm nhiều thứ, bao gồm hiểu các thứ liên quan đến expanders.
  • Dragos M. Cvetkovic, Michael Doob, Horst Sachs, Spectra of Graphs: Theory and Applications, Academic Press; 3rd Revised edition (August 1, 1997). Đây là sách tham khảo chính về algebraic graph theory.
  • Fan Chung, Spectral Graph Theory, American Mathematical Society (May 1997). Sách viết rất tốt và rõ ràng. Cái dở duy nhất là bà Fan Chung lại chọn bộ Lapacian eigenvalues thay vì bộ eigenvalues của đồ thị như trong các applications thường dùng. Chuyển qua chuyển lại các kết quả rất mất thời gian.

3.2 Phương pháp xác suất (bao gồm random graphs). Phương pháp xác suất là một trong những công cụ chính của theoretical computer science, với ứng dụng ở khắp mọi nơi. Trong complexity theory & algorithms ta dùng phương pháp xác suất phân tích và thiết kế PCP, randomized (approximation) algorithms, derandomization, pseudo-random number generation, v.v. Trong mạng máy tính ta có randomized routing, randomized MAC protocols, blocking analysis of switches and routers, v.v. Trong cơ sở dữ liệu gần đây phát triển mạnh probabilistic databases, v.v.

Tôi sẽ giới thiệu sách về xác suất và thống kê trong một đề mục riêng. Phần dưới đây chỉ nói riêng về phương pháp xác suất theo nghĩa của Erdos.

  • Noga Alon and Joel H. Spencer, The Probabilistic Method, Wiley-Interscience; 2 Sub edition (August 24, 2000). Kinh điển! Không có gì phải bàn.
  • Béla Bollobás, Random Graphs, Cambridge University Press. Lại một quyển kinh điển nữa!
  • Quyển của Mitzenmacher và Upfal đã giới thiệu trong phần giải thuật.

3.4. Enumerative combinatorics.

  • Richard Stanley, Enumerative Combinantorics Vol. 1 & 2, Cambridge University Press. Kinh điển! Chứa hầu hết tất cả những thứ mà dân khoa học máy tính cần biết về enumerative combinatorics.
  • Dennis Stanton and Dennis White, Constructive combinatorics, Springer; 1 edition (May 15, 1986). Quyển này có lẽ ít người biết nhưng tôi thấy rất hay cho dân học máy tính. Nó viết về enumerative combinatorics từ góc nhìn thuật toán và bijective proofs. Tôi đã lấy lớp của cả hai vị Dennis. Bác Stanton là người thầy có ảnh hưởng lớn nhất đến triết lý giáo dục của tôi.
  • David M. Bressoud, Proofs and Confirmations: The Story of the Alternating-Sign Matrix Conjecture, Cambridge University Press (August 13, 1999). Quyển này phải nói là trên cả tuyệt vời. Quyển sách nói về một conjecture rất nổi tiếng gọi là Alternating Sign Martrix Conjecture và duyệt lại toàn bộ quá trình người ta “tấn công” conjecture này. Tôi đã từng bỏ 6 tháng vật lộn với nó 🙁 . Kết thúc bằng các công trình của Zeilberger và Kuperberg. Nó tuyệt vời ở chỗ, ngoài việc dùng làm sách giáo khoa cho một vài lớp enumerative combinatorics rất tốt, nó vẽ ra rất rõ ràng quá trình phát triển và phương pháp tư duy của một nhánh toán học dựa trên một câu chuyện cụ thể, một đề tài nghiên cứu cụ thể. Terry Tao có viết một bài hàm chứa ý tưởng tương tự về tính liên thông của các phát triển trong toán. Đến bây giờ mở sách này ra đọc tôi vẫn tìm thấy những cái mới, và cả các bài toán chưa giải được. Enumerative combinatorics là “tình yêu thời niên thiếu” của tôi, và quyển này là quyển tốt nhất giải thích tại sao tôi vẫn còn … day dứt 🙂 (Trong quyển này có nói về một thuật toán tính định thức của tác giả truyện Alice lạc vào xứ thần tiên!)
  • George E. Andrews, The Theory of Partitions, Cambridge University Press (July 28, 1998). George Andrews là người tìm ra những quyển sổ tay mất tích của Ramanujan. Quyển sách của ông nằm giữa giải tích, lý thuyết số, và enumerative combinatorics. Có lẽ định lý hay nhất trong sách là công thức tính tổng số integer partitions của một số nguyên bất kỳ. Đọc sách này ta sẽ thấy generating functions mạnh như thế nào, và được dùng như thế nào trong các vấn đề cực kỳ hóc búa của lý thuyết số. Ngoài ra, nó cũng là quyển sách rất tốt về các hyper-geometric series và q-series. Tuyệt cú mèo! Có một lần tôi nghe George Andrews trình bày ở một hội nghị, ông mang theo một cuộn giấy to oành in một chương trình ông viết từ hồi đầu thập niên 70 để tìm các conjectures trong enumerative combinatorics. Ông kéo cuộn giấy đi từ đầu đến cuối phòng, chưa hết một nửa.

3.5 Algebraic combinatorics. Tư tưởng của nhánh này rất gần, theo một nghĩa nhất định, với các phương pháp đại số dùng trong coding theory và complexity theory hiện đại. Nó lại liên quan mật thiết đến giải tích của các hàm vuông góc. Tôi làm M.S. Thesis Toán trong nhánh này. Mặc dù bây giờ không làm về nó nữa, nhắc lại vẫn còn thấy “nhiệt huyết” bừng bừng 🙂 . Ngoài ra, nhánh này cũng là anh em cột chèo với algebraic graph theory, rất cần thiết trong cả complexity theory lẫn một số bài toán trong mạng máy tính! Đó là chưa kể liên minh sống còn với representation theory cũng lại được dùng trong KHMT (như trong loạt bài về nhân ma trận tôi đang viết dở).

  • Chris Godsil, Algebraic Combinatorics, Chapman & Hall/CRC (April 1, 1993).
  • Chihara, An Introduction to Orthogonal Polynomials, Routledge; 1 edition (January 1, 1978). Quyển kinh điển về các đa thức vuông góc.
  • George E. Andrews, Richard Askey, Ranjan Roy, Special Functions, Cambridge University Press; New Ed edition (February 15, 2001). Tất cả những thứ bạn cần biết về các hàm đặc biệt!
  • William Fulton, Young Tableaux: With Applications to Representation Theory and Geometry, Cambridge University Press (December 28, 1996).
  • I. G. Macdonald, Symmetric Functions and Hall Polynomials, Oxford University Press, USA; 2 edition (June 30, 1999). Quyển này và quyển của Fulton là kinh điển về symmetric functions.

3.6 Extremal set theory, extremal set systems, và design theory. Những thứ này thì dùng làm gì trong KHMT? Một vài ví dụ nhỏ: chúng liên quan mật thiết với lý thuyết thử nhóm (group testing) được dùng trong DNA library screening (bio-computing), trong thiết kế MAC protocols và thử lỗi của mạng quang (networking), và thiết kế thuật toán nói chung. Design theory lại cũng liên quan chặt chẽ với coding theory (sẽ giới thiệu sách sau) dùng trong communications và trong complexity theory.

  • Konrad Engel, Sperner Theory, Cambridge University Press. Phát triển lý thuyết của một định lý rất đơn giản và hùng mạnh trong topology: định lý Sperner.
  • Bela Bollobas, Combinatorics, Cambridge University Press. Nhỏ và hiệu quả!
  • A. E. Brouwer, A. M. Cohen, A. Neumaier, Distance Regular Graphs, Springer (August 1989). Nhiều bài toán thiết kế các cấu trúc extremal có thể được mô hình hóa bằng distance regular graphs: một loại đồ thị rất giàu có về cấu trúc đại số, nhờ đó bài toán trở nên tổng quát hơn (dùng công cụ của đại số), và đôi khi dễ dàng hơn.
  • Ding-Zhu Du and Frank K. Hwang, Combinatorial Group Testing and Its Applications, World Scientific Publishing Company; 2nd edition (May 2000). Quyển này là tham khảo chính (và duy nhất) cho lý thuyết thử nhóm. Nó là dạng monograph chứ không phải textbook, dùng làm tham khảo.

4. Xử lý ngôn ngữ tự nhiên (danh sách của anh Bạch Hưng Nguyên).

Sách cơ bản:

  • [1] Manning & Schutze, Foundation of Statistical NLP – (có online nếu có access vào MIT library)
  • [2] Jurasky & Martin, Speech&Language Procesing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, 2nd edition.

Tham khảo thêm:

  • [3] James Allen, Natural Language Understanding
  • [4] Fred Jelinek, Statistical Method for Speech Recognition
  • [5] Xudong Huang et al, Spoken Language Processing

Lộ trình tự đọc & học trong 1 hoặc 2 học kì theo thứ tự sau

——–
Chương 1+2+3+4 – [1]: Introduction / Mathematical Foundations/ Linguistic Essential / Corpus-based Work
Chương 7 – [2]: Phonetics
——–
Chương 6 – [1]: Statistical Inference: n-gram Models over Sparse Data
Chương 4 – [2]: N-grams
——–
Chương 8 – [5]: Hidden Markov Models
Chương 2 – [4]: Hidden Markov Models
Chương 4 – [2]: Word Classes and Part-of-Speech Tagging
Chương 6 – [2]: Hidden Markov and Maximum Entropy Models
——–
Chương 3 – [3]: Grammar and Parsing
Chương 12 – [2]: Formal Grammars of English
Chương 11 – [1]: Probabilistic Context Free Grammar
Chương 12 – [1]: Probabilistic Parsing
Chương 13 – [2]: Parsing with Context-Free Grammars
Chương 14 – [2]: Statistical Parsing
——–
Chương 3 – [2]: Words and Transducers
——–
Chương 22 – [2]: Information Extraction
——–
Chương 25 – [2]: Machine Translation
——–
Chương 15 – [1]: Topics in Information Retrieval
——–
Chương 16 – [1]: Text Categorization
——–

Lộ trình này giới thiệu chuyên sâu về phương pháp thống kê NLP, mô hình n-gram , mô hình Markov ẩn, & kĩ thuật phân tích câu (parsing). Sau đó là giới thiệu sơ qua một số topics mà NLP đóng vai trò quan trọng như Trích chọn Thông Tin (Information Extraction), Dịch tự động (Machine Translation), Khai Thác Thông Tin (Information Retrieval), & Phân Loại Văn Bản (Text Categorization). Về cơ bản sau khi xong lộ trình này là đủ để bắt tay vào chuyên sâu các vấn đề trong NLP. Rất nhiều topics của NLP không đề cập trong lộ trình này ví dụ như: Các máy Hữu hạn trạng thái (Finite-state Machines), Các kĩ thuật học máy (Machine Learning techniques), Nhận dạng tiếng nói (Speech Recognition), Tổng hợp tiếng nói (Speech Synthesis), Hệ thống Hỏi-Đáp (Q&A systems).

Sẽ tiếp tục cập nhật! Không biết bao giờ mới xong.

Chủ đề : Giới thiệu sáchBookmark the permalink. Trackbacks are closed, but you can post a comment.

32 Comments

  1. tempregacc
    Posted 10/10/2007 at 9:14 am | Permalink

    Danh sách “bible books” của anh Hưng, anh Nguyên, anh Long, anh Đoàn kinh quá, không biết các anh đọc đống sách đó trong bao lâu.
    Em nghĩ ngoài sách chuyên ngành ra, cũng nên nói về các sách cho sv năm thứ 1, 2. Em nghĩ nhiều bạn sv VN trước khi đi du học cũng sẽ cần biết những cuốn toán cao cấp để nếu không đọc thì cũng biết được các thuật ngữ trong tiêgsn ANh là gì (vì toàn quen học tiêgn VIệt rồi) Mong các anh chỉ giúp cho,

  2. npson
    Posted 10/10/2007 at 2:42 pm | Permalink

    @tempregacc: Một số kinh nghiệm cá nhân của tôi.
    1) Kiến thức cơ bản: Bạn chọn 1 trong số đó đọc chính, các cuốn khác tham khảo khi không hiểu. Theo tôi đây là một thói quen tốt, dùng vài quyển cùng lúc, vừa giúp bạn hiểu nhanh hơn, vừa giúp bạn có tầm nhìn tốt hơn. Trong chuyên ngành tôi, khi vào ứng dụng thì mấy cách hiểu naiive nhiều khi được việc hơn cách hiểu chính quy.
    2) Toán: Tôi cho rằng kiến thức Toán cơ bản Việt Nam ta tốt, đủ sức khi du học, chỉ có Toán rời rạc là yếu thôi. Quyển của Rosen ở nhà có cả bản tiếng Việt và bản gốc. Phổ của quyển này rộng.
    3) Tiềng Anh: Như bác Long nói, đừng đợi, đọc ngay những gì bạn quan tâm và đọc ngay bản gốc. Ngày trước, tôi cày mệt mỏi với 2 quyển “Cẩm nang thuật toán”, khi đọc bản gốc là quyển “Algorithms” của Robert Sedgewick thì thấy bản gốc dễ hiểu hơn rất nhiều. Dịch thuật rất khó cho nên nhiều khi làm tối nghĩa không cần thiết. Bạn sẽ hỏi: Tìm đâu ra bản gốc ? Mắc quá làm sao mua ? Xunhasaba lâu lâu có đợt giảm giá. Tôi tìm được Sedgewick, Knuth cả 3 tập, Aho+Hopcroft+Ullman (vài quyển trong bộ kinh điển), dragon book… tất cả với giá 30000 1 quyển (1996-1997). Một nơi khác là thư viện khoa CNTT DHBK. Ở đó cho photo sách. Rất nhiều, có cả sách sâu. Tôi nhớ có cả sách chuyên khảo to đùng về graph algorithms, data compression… Không lo kiến thức không đủ, tôi bắt đầu đọc Sedgewick vào năm lớp 11 và mọi chuyện OK. Không hiểu hết nhưng học được nhiều. Tôi nhớ cần dùng không gian vector n chiều, tôi treated mọi thứ như 3 chiều vẫn OK. Tôi chỉ cảm thấy drowned khi đọc mấy bài về complexity trên Computer journal, quá nhiều xác suất… chả hiểu gì.

    • tmt
      Posted 10/09/2013 at 11:06 pm | Permalink

      “thư viện khoa CNTT DHBK”

      Theo em được biết phải là sinh viên BK mới vô được trường với thẻ sinh viên gì đó :(, anh còn biết tiệm photo nào ở trên tphcm không ạ?
      Em cảm ơn ạ

  3. Long Nguyen
    Posted 12/11/2007 at 10:00 pm | Permalink

    chao moi nguoi !
    Hom nay la ngay dau tien minh den voi blog Khoa Hoc may tinh that bo ich !
    Cac sach cua anhHung noi tren minh co the tim thay tai
    http://www.gigapedia.org
    Day qua la 1 trang web tuyet voi cho sinh vien –> down free
    Toi uoc gi biet den no som hon.
    (^ ^)

  4. AustinN
    Posted 18/11/2007 at 12:35 am | Permalink

    Anh Hưng bữa nào rảnh thì làm vài dòng về Cách thức đọc một cuốn Textbook nhé. Em undergrad 1st year thấy để absorb hết cái hay trong một cuốn textbook hơi bị khó. Đặc biệt là khả năng làm sao để biết cuốn này viết tốt phần này, cuốn nọ viết tốt phần kia, phải chăng là phải đọc hết hay là có người chỉ thì mình mới biết ạ?

  5. Posted 18/11/2007 at 6:02 am | Permalink

    Chào AustinN, tôi đã có viết về đề tài này rồi:
    http://www.procul.org/blog/2007/06/12/ma-hoa-tri-th%e1%bb%a9c-nh%c6%b0-th%e1%ba%bf-nao/

  6. sontran
    Posted 25/11/2007 at 7:57 pm | Permalink

    To anybody interested to learn the compiler theory properly I suggest “Engineering a Compiler”, by Keith Cooper and Linda Torczon. Extremely well organized book.

    “Red Dragon” was for a long time the most referred book, but it’s not so convenient for a beginner. BTW there’s even a “second edition” of it, a “Purple Dragon”, thoroughly updated, I guess mostly by Monica S. Lam, but I still find “Engineering a Compiler” a better start.

    After “Engineering a Compiler” (or together with it) a second book for somebody who wants to do some serious compiler-like code is certainly “A Retargetable C Compiler: Design and Implementation” by Chris Fraser and
    David Hanson, which is an excellent “case study”. EAC book gives you enough of “really-why” and ARCC book enough of “high-quality-how”.

  7. Trung Duong
    Posted 14/01/2008 at 3:41 am | Permalink

    Chao cac ban neu ban nao o TPHCM thi co the qua DH BK TPHCM vao phong photo khoa CNTT photo may quyen ve Data Structure and Algorithms co mot so quyen cung kha hay nhu 3 quyen cua Knuth,quyen Introduction to Algorithms cung co nua gia bang gia photo (hoi mat hoc chut nhung cung re hon mua tren amazon) photo rat ro

    toi la sv tu nhien tphcm mong cac ban chi bao

  8. trungnt
    Posted 02/03/2008 at 7:44 am | Permalink

    @All: Em đang cần cuốn “L. Lovász and M.D. Plummer, Matching Theory, Annals of Discrete Mathematics, 29, North-Holland Mathematics Studies, 121”. Bác nào có bản ebook tiếng Anh cuốn này cho em xin.
    email: trungntbk@gmail.com

  9. quacam09
    Posted 18/11/2008 at 5:59 am | Permalink

    Em học về Computer Sciences. Cho em hỏi là em muốn chọn một quyển sách toán Tiếng Anh để đọc các kiến thức về giới hạn, gần đúng với vô cùng lớn và vô cùng bé, đạo hàm, tích phân, vi phân, xác xuất,… thì nên đọc quyển nào ạ?
    Quyển Mathematical Methods for Physics and Engineering, Third Edition, K.F. RILEY, M.P. HOBSON and S. J. BENCE thế nào ạ?
    Mong các anh chị giúp đỡ ạ!

  10. TVH
    Posted 02/01/2009 at 9:51 pm | Permalink

    Bài này cũng được đăng trên báo Người lao động.

    http://acong.nld.com.vn/index.php?option=com_content&task=view&cid=23&id=314&Itemid=53

    Theo ngày tháng thì bài ở Blog online trước. Không biết VLOS có phải là 1 ai tham gia trong Blog KHMT không vậy? Chuyện bản quyền không biết thế nào đây.

  11. Duy
    Posted 24/02/2009 at 9:54 pm | Permalink

    Speech & Language Procesing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, 2nd edition.
    Cho em hỏi ebook cuốn này có thể download ở đâu? Em chỉ tìm thấy 1st edition, trong khi cái lô trình đọc mà anh Bạch Hưng Nguyên đề ra có vài chương mà trong 1st edtion ko có, nên cần cuốn 2nd editon lắm.

  12. sontran
    Posted 25/02/2009 at 7:58 pm | Permalink

    Speech & Language Procesing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition, 2nd edition.

    bạn có thể tìm được bản draft qua google, nó cũng không khác gì nhiều so với sách.

  13. Duy
    Posted 26/02/2009 at 5:21 am | Permalink

    Bản draft ở chỗ nào vậy anh? 😐 Sao em tìm ko thấy nhỉ 😐

  14. truong tu
    Posted 27/02/2009 at 10:54 pm | Permalink

    anh thay hoc ki thuat vien that la kho .gio muon hoc de biet them may tinh thi phai lam sao day ?the anh co can phai hoc qua lop ki thuat vien ko?
    gio anbh dan g can hieu biet may tinh lam gio anh phaqi lam sao day

  15. sontran
    Posted 05/03/2009 at 11:21 pm | Permalink

    Speech and Language Processing: An introduction to natural language processing, computational linguistics, and speech recognition. Daniel Jurafsky & James H. Martin. Copyright c 2007, All rights reserved. Draft of September 19, 2007.
    http://www.cs.brandeis.edu/~cs114/Jurafsky-Martin-NLP/

  16. Posted 10/10/2009 at 7:13 am | Permalink

    Em dang hoc thuat toan tabu search co phan 3 la graph coloring (trong quyen constraint-based local search) cua tac gia Van Hecteryc va Laurant Michel.
    Em ko hieu thuat toan graph coloring o day la nhu the nao
    Cac anh chi co the cho em loi khuyen ko
    Em xin cam on rat nhieu.

  17. Ljnh Gjang
    Posted 18/04/2010 at 8:55 pm | Permalink

    em rat muon hoc lap trinh may tinh nhung do dieu kien nen mai toi bay gio em dang con rat mo ho ve lap trinh. nhu nguoi ta lap trnh nhu the nao lam sao de lap trinh phai hoc nhung thu gi de co the lap trinh duoc. anh giup em voi?

  18. Posted 20/04/2010 at 5:13 am | Permalink

    Chào Ljnh Gjang, cách tốt nhất để học lập trình là phải … lập trình rất nhiều, và đọc codes của các lập trình viên giỏi.

  19. tran thi thanh
    Posted 14/05/2010 at 8:28 am | Permalink

    lap trinh! niem dam me vo tan cua toi>

  20. svcntt
    Posted 23/08/2010 at 2:39 am | Permalink

    Em đã phân ngành theo học ngành Kỹ thuật máy tính( ở ĐHBKHN). Em có tìm hiểu trên mạng về ngành Kỹ thuật máy tính(học những gì và cơ hội nghề nghiệp) nhưng còn mơ hồ. Anh nào có hiểu biết sâu sắc về ngành này thì có thể nói rõ hơn được không và ngành này khác biệt với Khoa hoc máy tính ở điểm nào ? Nhân tiện cho em hỏi, để học tốt ngành này thì em cần phải đọc sách gì? Các anh chỉ giúp.

  21. scorpiovn
    Posted 23/08/2010 at 5:57 pm | Permalink

    Chào anh,

    Lúc trước em học ngành điện tử.
    Hiện nay, em làm lập trình được 3 năm và muốn học master về CS.
    Anh có thể cho em biết hiện nay trong CS lĩnh vực hay ngành nào đang “hot” và có triển vọng trong những năm sắp tới.

    Thanks Anh.

  22. Posted 23/08/2010 at 6:04 pm | Permalink

    Bạn nên học statistical machine learning. Statistics nói chung. Về cơ bản, mình giỏi thì học cái gì cũng tìm được việc (ở Mỹ là thế). Học nhiều kỹ năng cơ bản (lập trình, phân tích thiết kế thuật toán, mạng máy tính, và statistics), lúc đi interview thì chứng tỏ cho người ta thấy là mình giỏi các kỹ năng này. 100% là sẽ tìm được việc. Nếu chọn một ngành cụ thể nào đó thì nên có một hiểu biết rộng về ngành đó. Chỉ một vài thứ là cần biết sâu.

  23. Cuong Nguyen
    Posted 19/09/2010 at 8:17 am | Permalink

    Chào anh Hưng, em đang làm PhD, sách và paper phải đọc khá nhiều, nhưng nhiều khi thấy đọc xong một thời gian nó trôi đi đâu hết, rất phí công sức và hiệu quả ko cao. Anh có thể chia sẻ một số kinh nghiệm về việc take note khi đọc sách và paper được ko a. Cảm ơn anh.

    • Posted 20/09/2010 at 10:00 am | Permalink

      @Cuong Nguyen,

      Ông bà ta nói “học phải đi đôi với hành” là có nguyên do. Nói chung cái gì học mà không hành thì tôi quên nhanh lắm. “Hành” có vài nghĩa. Trong ngữ cảnh nghiên cứu thì có 2 cách “hành” làm cho mình nhớ lâu: (1) dùng kết quả đã học để làm cái gì đó, như chứng minh một định lý mới chẳng hạn, và (2) cải tiến cái đã học cho có một kết quả tốt hơn. Trong tinh thần của 2 thì khi take notes ta nên tìm cách trình bày lại cái đã học theo cách của mình, cố gắng không “chép” note. Học một kỹ thuật mới thì nên tìm cách áp dụng nó chứng minh một kết quả (hơi) khác. Học một định lý mới thì nên tìm nhiều cách khác nhau để chứng minh nó.

      Tóm lại, theo kinh nghiệm cá nhân tôi thì để thấm cái gì đó ta cần lặp đi lặp lại nó từ nhiều góc độ khác nhau. Không còn cách nào khác.

  24. hoc_dot
    Posted 10/10/2010 at 9:03 am | Permalink

    Hi, chào anh hiện tại em không học DH hay trường chính quy nào, nhưng em rất thích ngành KHMT này, và có 1 số kiến thức cơ bản, anh cho em lời khuyên đi, thanks

  25. clairsang
    Posted 04/11/2010 at 2:40 am | Permalink

    Mình download được 1 số sách trong list trên của bác Hưng. Bạn nào cần share thì email vào clairsang@gmail.com

  26. hoangcuong2011
    Posted 17/11/2011 at 1:25 pm | Permalink

    Thưa các thầy em là Hoàng Cường. Em đang học Master ở Việt Nam mình ạ.
    Em thấy không có sách nào học máy for NLP cả. chỉ có 1 cái course em rất thích của Giáo sư Collins
    http://www.cs.columbia.edu/~mcollins/courses/e6998-3/lectures.html
    Tiếc là lectures chủ yếu là file slide. k có các file writing Prof Collins viết. Em rất thích đọc các writing của Prof Collins. Rất sâu nhưng quan trọng hon là dễ hiểu 😀
    Nhờ các thầy cho em hỏi có cuốn nào chuyên như thế này k ạ? Kiến thức Statistics quá rộng và sâu. Ở VN mình k đào tạo tốt lắm. Em chỉ có thể đi lên từ những thứ liên quan tới NLP để giúp em figure out được dễ dàng hơn ạ.
    Em cám ơn ạ.

  27. Metallica
    Posted 09/09/2012 at 7:52 am | Permalink

    Chào GS Hưng, em đang học tổ hợp và giáo trình mà em đang học nói về các phần như: xếp đặt và hoán vị, các tập con của tập hợp, phân hoạch của tập hợp, kỹ thuật hàm sinh, nguyên lý bù trừ. Trong mỗi phần có các thuật toán như sinh hoán vị, chỉnh hợp, sinh các tập con k-phần tử… Em đã xem qua các quyển sách về Combinatorics ở trên và thấy nó rất rộng. GS cho em hỏi cái em đang học là thuộc nhánh nào và có sách nào nói về các thuật toán như em đã nói ở trên ạ ?

    • Posted 09/09/2012 at 10:56 pm | Permalink

      @Metallica: cái bạn đang học thuộc về enumerative combinatorics. Để tìm các thuật toán bạn cần, quyển của Stanton & White là tuyệt nhất.

  28. BDT
    Posted 07/04/2014 at 6:59 am | Permalink

    Em thưa thầy giờ em muốn tìm hiểu về datamining thì sẽ cần phải học những gì ạ ?

  29. bảo thành
    Posted 14/12/2014 at 5:30 am | Permalink

    Cho em hỏi học các sách theo thứ tự sau có phải không ạ:
    1st. Phân tích thiết kế thuật toán cơ bản >>
    2nd. Phân tích thiết kế thuật toán nâng cao >>
    3th. Combinatorics >>
    4th. Xử lý ngôn ngữ tự nhiên || Machine learning và statistics || Databases

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*
*