My bookshelf - Textbooks, recommended books and material.

Those labeled with "**" are considered authoritative or classic. Those labeled with "*" are considered very good.

Categories


Algorithm and data structure

  1. ** The Art of Computer Programming. Donald E. Knuth
  2. ** Introduction to Algorithms, Second Edition (Hardcover).
    Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein. 2001.
  3. Algorithms + data structures=programs
    Niklaus Wirth. (1976) [QA76.6.W56] Available at HCC Circulating Collection (2nd floor).
  4. Data Structures and Algorithm Analysis in C.
    Mark Allen Weiss. ISBN 0-8053-5440-9. QA76.73.C15W463 (1992)
  5. Data Structures and Algorithms in C++.
    Adam Drozdek. ISBN 0-534-94974-6. QA76.73.C153D76 (1996)
  6. Data structures and algorithsm in Java.
    Michael T. Goodrich, Roberto Tamassia. 1998. ISBN 0-471-19308-9
  7. Fundamentals of Algorithmics. Gilles Brassard, Paul Bratley. 1996.
    [QA9.58.B73]. ISBN 0-13-335068-1
  8. Algorithmics - The spirit of computing. 2nd Ed. David Harel. 1992.
    [QA76.9.A43H37] ISBN 0-201-50401-4
  9. Fundamentals of computing II. Allen Tucker etc. 1995. ISBN 0-07-065502-2
  10. Fundamentals of Data Structures. Ellis Horowitz, Sartaj Sahni.
  11. Data Structures, Algorithms and Program Style Using C. James F. Korsh, Leonard J. Garrett.
    [QA76.73.C15 K67 1988]. ISBN: 087150099X
  12. Data Structures and Algorithms. Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman. [QA76.9.D35 A38 1983] ISBN: 0201000237
  13. Information retrieval : data structures & algorithms. William B. Frakes, Ricardo Baeza-Yates.
    [QA76.9.D35 I543 1992] ISBN: 0134638379
  14. Algorithms. S. Dasgupta, C.H. Papadimitriou, U.V. Vazirani. http://www.cs.berkeley.edu/~vazirani/algorithms.html
  15. Introduction to Information Retrieval. Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze. (2008) Online version: http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html

Architecture

  1. * Computer Organization and Design. Second Edition: The Hardware/Software Interface.
    David A. Patterson, John L. Hennessy. 1997.
  2. Digital Computer Electronics. 3rd Ed. A.P. Malvino, J.A. Brown. [TK7888.3.M337 1993] ISBN 0-02-800594-5

Artificial intelligence

  1. Artificial Intelligence. 2nd Ed. Michael Negnevitsky. [QA76.76.E95N445 2004] ISBN 0-321-20466-2
  2. * Russell and Norvig. (2002). Artificial Intelligence: A Modern Approach (2nd edition). Prentice-Hall.
  3. Dennett, Daniel (1998). Brainchildren, Essays on Designing Minds, MIT Press and Penguin.
  4. ** Turing, Alan. "Computing Machinery and Intelligence." Mind 49: 433-460.
  5. Multiagent Systems - A modern approach to distributed artificial intelligence.
    Gerhard Weiss. [QA76.76.I58M85 1999] ISBN 0-262-73131-2
  6. NLP introduction in Python. http://www.acm.org/crossroads/xrds13-4/natural_language.html

Biochemistry

  1. ** Principles of Biochemistry. A. L. Lehninger, D. L. Nelson, M. M. Cox.
  2. * Biochemistry. C. K. Mathews, K. E. Van Holde.
  3. * Lippincott's Illustrated Reviews Biochemistry. P. C. Champe, R. A. Harvey.

Biomedical informatics

  1. * Algorithms on strings, trees, and sequences. Dan Gusfield (UC Davis).
    1997, 1999. ISBN: 0-521-58519-8. [QA76.9.A43387]
  2. Bioinformatics: a Practical Guide to the Analysis of Genes and Proteins.
    Baxevanis, Andreas D., Ouellette, B. F. Francis. Third Edition, Oct. 2004.
  3. * Shortliffe et al., Medical Informatics, Computer Applications in Health Care and Biomedicine, Second Edition, Springer, 2001.
  4. * O'Carroll et al, Public Health Informatics and Information Systems, Health Informatics Series, Springer 2003.
    [R858 .P83 2003] ISBN 0387954740
  5. Collen, A History of Medical Informatics in the United States 1950 to 1990, AMIA (American Medical Informatics Association), 1995.
  6. Slack, Cybermedicine: How Computing Empowers Doctors and Patients for Better Health Care, Jossey-Bass, Revised 2001.
  7. Ellis, Technology and the Future of Health Care, Preparing for the Next 30 Years, Jossey-Bass, 2000.

Compiler

  1. ** Compilers: principles, techniques, and tools. Alfred V. Aho, etc. [The dragon book]
    Three versions of this book referred by the color of the dragon on the cover:
    Principles of Compiler Design (1977): “green dragon”,
    Compilers: Principles, Techniques, and Tools (1986): “red dragon”,
    Compilers: Principles, Techniques, and Tools, 2nd ed. (2006): “purple dragon”.
  2. * LR Parsing: Theory and Practice. Chapman, N. P. (1987)
  3. The Theory of Parsing, Translation, and Compiling. Vol.1, Vol.2. Alfred V. Aho, Jeffrey Ullman. (1972).
  4. Crafting a Compiler with C. Charles Fischer, Richard LeBlanc. (1991)
  5. Bison - The YACC-compatible Parser generator (for Bison Version 1.23).
    Charles Donnelly, Richard Stallman. (1993) [P98.5.P38 D66]
  6. A Retargetable Compiler Design and Implementation.
    David R. Hanson and Christopher W. Fraser. (1995) [QA76.73.C15 F75] Annotation of the lcc compiler.
  7. Structure and Interpretation of Computer Programs,Second Edition.
    Harold Abelson,Gerald Jay Sussman,Julie Sussman. (1996) [QA76.6.A255]
  8. * Advanced compiler design and implementation. Steven Muchnick. (1997)
    [The whale book] Wide coverage in all kinds of classic optimizations.
  9. * Modern Compiler Implementation in C. Adrew Appel. (1998)
    [The tiger book] Uses the Tiger language implemenation as example. http://www.cs.princeton.edu/~appel/modern/ml/
  10. Modern Compiler Implementation in Java. Second Edition. (1998)
    [QA 76.73 .J38 A65] http://www.cs.princeton.edu/~appel/modern/ml/ Uses the miniJava language as example.
  11. Optimizing compilers for modern architectures: a dependence-based approach.
    Allen and kennedy. (2001) On compiler back end. About parallel optimizations in iteration. Uses math.
  12. Engineering A Compiler. Keith Cooper, Linda Torczon. (2003)
    Limited on dependence analysis, optimization of HPC fortran language.
  13. Compiler Construction: Principles and Practice. Kenneth C. Louden. (January 24, 1997)
  14. Modern Compiler Design (there are several books with this name).
  15. * Linkers and loaders / John R. Levine. [A76.76.A87 L48 2000]
  16. Structure and interpretation of computer programs / Harold Abelson and...
    [QA76.6 .A255 1996] Assigment: http://mitpress.mit.edu/sicp/psets/index.html
  17. [1988] Parsing Theory I: Languages and Parsing. Seppo Sippu, Eljas Soisalon-Soininen. Online version
  18. [1990] Parsing Theory II: LR(k) and LL(k) Parsing. Seppo Sippu, Eljas Soisalon-Soininen. Online version

Automata theory, Computation theory and complexity

  1. Introduction to Automata Theory, Languages, and Computation
    (3rd Edition) John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. (2006)
  2. An introduction to Formal Languages and Automata. 4th Ed. Peter Linz. 2006
    [QA267.3.L56 2006] ISBN: 0-7637-3798-4

Database

  1. Database Processing - Fundamentals, Design & Implementation. 7th Ed. David Kroenke.
    [QA76.9.D3K737 1999] ISBN 0-13-084816-6
  2. Database Management Systems. Raghu Ramakrishnan, Johannes Gehrke.
    http://pages.cs.wisc.edu/~dbbook/

Discrete math

  1. * Concrete Mathematics: A Foundation for Computer Science (2nd Edition).
    Ronald L. Graham, Donald E. Knuth, and Oren Patashnik (Hardcover - Mar 10, 1994)
  2. * Discrete Mathematics and Its Applications. Kenneth Rosen. 6th Ed. 2006.

Dynamic programming, Petri Net, Constraint programming, Operation research

    Dynamic programming
  1. * Bellman/Dreyfuss [Applied Dynamic Programming, 1962. QA264.B417a]
  2. ** Richard Bellman [Dynamic Programming, 1957. QA264.B36] (Bellman: 1920-1984)
  3. Sniedovich (QA264 .B36)
  4. * Dynamic Programming and Markov Processes. Howard, Ronald A. 1960, [QA264.H6] (on iteration method)
    Petri net
  5. [Valette] "Advances in PNs 1991" (QA267. AA34).
    [Software Implementation of Petri Nets and Compilation of Rule-based Systems, on page 296]
  6. Kurt Jensen [Coloured Petri Nets, QA267.J46 1992 V.1] (Jensen: 1950-)
  7. K. Jensen and G. Rozenberg (eds.): High-level Petri Nets. Theory and Application.
    ISBN: 3-540-54125 X or 0-387-54125 X, Springer-Verlag, 1991.
  8. http://www.informatik.uni-hamburg.de/TGI/PetriNets/
  9. http://en.wikipedia.org/wiki/Petri_net
  10. http://www.ace.ucv.ro/~brezovan_marius/Sibiu.pdf
    Constraint programming
  11. [Hooker] wpweb2.tepper.cmu.edu/jnh/joc2.pdf
  12. [Barkak] arti.vub.ac.be/cursus/2006-2007/internship/wds99.pdf
  13. [Banda] csse.monash.edu.au/courseware/cse3301/proj2006/mbanda_sem2/bandastuckey.pdf
  14. [Nordlander] www.csd.abdn.ac.uk/publications/theses/downloads/nordlander/nordlanderThesis.pdf
  15. "OPL" book by [Van Hentenryck] (QA76.612.C7, is a Editted review book?)
  16. http://en.wikipedia.org/wiki/Constraint_programming
  17. [Thom Fruhwirth, Slim Abdennadher] Essentials of Constraint Programming, QA76.612.F78 2003
    Operation Research
  18. Introduction to operations research / Frederick S. Hillier, Gerald J. Lieberman. [T57.6 .H54 1986] 4th Ed.
  19. Operations Research. 2nd Ed. R. Bronson, G. Naadimuthu. [T57.6.B76 1997] ISBN 0-07-008020-8

Graphics

  1. ** OpenGL(R) Programming Guide: The Official Guide to Learning OpenGL.
    Mason Woo, Jackie Neider, Tom Davis, Dave Shreiner, OpenGL Architecture Review Board (The Red Book).
  2. ** OpenGL(R) Reference Manual: The Official Reference Document to OpenGL, Version 1.4 (4th Edition)
    -- by OpenGL Architecture Review Board, Dave Shreiner (The Blue Book).
  3. ** Computer Graphics: Principles and Practice. 2nd Ed. in C. Foley, van Dam, Feiner, Hughes.
    [T385.C5735 1996] ISBN 0-201-84840-6

Human computer interface

  1. Usability engineering - Scenario-based development of human-computer interface. (2002)
    Mary B. Rosson, John M. Carroll. ISBN 1-55860-712-9
  2. Software for use - A practical guid to the models and methods of Usage-Centered Design
    Larry Constantine, Lucy Lockwood. [QA76.76.A65 C665 1999] ISBN 0-201-92478-1
  3. The humane interface - New Directions for Designing Interactive Systems. Jef Raskin.
    [QA76.9.H85 R37 2000] ISBN 0-201-37927-6

Machine learning

  1. * Neural Networks : A Comprehensive Foundation.
    by Simon Haykin (1999, 2nd Ed., 842 pages) [QA76.87.H39 1999]. ISBN: 0-13-273350-1.
    1st/2nd Ed. available at UH lib. 3rd Ed. out on May 1, 2007 at Amazon.
  2. ** Reinforcement Learning: An Introduction (Adaptive Computation and Machine Learning)
    by Richard S. Sutton and Andrew G. Barto (Hardcover - Mar 1, 1998). ISBN: 0262193981
    Also available at: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html
  3. ** Machine Learning. Tom M. Mitchell. [Q325.5 .M58 1997]. ISBN: 0070428077 (Mitchell: 1951-)
  4. * Information Theory, Inference, and learning algorithms.
    David J. C. Mackay. 2003. ISBN 0-521-64298-1
  5. * Pattern Classification. Richard Duda, Peter hart, David Stork. 2nd Ed. 2001.
    [Q327.D83 2000]. ISBN 0-471-05669-3
  6. Introductory Statistics with R. Peter Dalgaard. [QA276.4.D33 2002] ISBN 0-387-95475-9

Multimedia

  1. http://diveintomark.org/archives/2008/12/18/give-part-1-container-formats
  2. http://diveintomark.org/archives/2008/12/19/give-part-2-lossy-video-codecs

Network

  1. Computer Networks. 2nd Ed. Larry Peterson & Bruce Davie. [TK5105.5.P479 2000] ISBN 1-55860-514-2
  2. Computer Networks and Internets. 2nd Ed. Douglas E. Comer. [TK5105.5.C5897 1999] ISBN 0-13-083617-6
    The book's online version is at: http://netbook.cs.purdue.edu/
  3. * Internetworking with TCP/IP. Vol. I, II, III. Douglas E. Comer, David L. Stevens. ISBN 0-13-032071-4

Numerical methods

Other

  1. The Elements of Computing Systems: Building a Modern Computer from First Principles.
    Noam Nisan, Shimon Schocken. MIT Press, 2005. ISBN-10: 026214087X. Site:
    http://www1.idc.ac.il/tecs/

Operating system

  1. ** Modern Operating Systems. Andrew Tanenbaum.
  2. * Operating Systems: Design and Implementation. Andrew S. Tanenbaum, Albert S. Woodhull.
  3. Operating Systems: Internals and Design Principles (4th Edition). William Stallings. 2000.
  4. Online book (kernel 2.0.33): http://www.redhat.com/mirrors/LDP/LDP/tlk/tlk-title.html

Parallel and distributed system

Programming

  1. Software tools.
    Assembly
  2. * Assembly language for Intel-based computers. 3rd Ed. Kip R. Irvine. ISBN 0-13-660390-4
    C
  3. ** Brian W. Kernighan and Dennis M. Ritchie: The C Programming Language, 2nd ed., Prentice Hall, 1988
  4. The GNU C Library. http://www.gnu.org/software/libc/manual/html_node/index.html
  5. Wes Peterson ICS 212 (2006)
    LISP
  6. Object-Oriented Common Lisp. Stephen Slade. [QA76.64.S576 1999] ISBN 0-13-605940-6.
    C++
  7. * The C++ Programming Language: Special Edition (3rd Edition) by Bjarne Stroustrup (Hardcover - Feb 11, 2000)
  8. Thinking in C++ by Bruce Eckel. 1995, 2000, 2003.
  9. The C++ primer, 4th Ed.. By Stanley B. Lippman. (QA76.73.C15 .L57 1998, 3rd Ed. Renewed, Due 12-18-06) [For new programmer]
  10. Essential C++. By Lippman. (QA76.73.C153 L577 2000. Renewed, Due 2-8-06) [For experienced programmer]
  11. Effective C++, 3rd Ed. By Scott Meyers. (QA76.73 .C153 M48 1998, 2nd Ed. Returned) [Arguably the best C++ book]
  12. More Effective C++. By Scott Meyers. [Arguably the best C++ book]
  13. C++ Templates: The Complete Guide. By David Vandevoorde, Nicolai M. Josuttis. [For C++ templates, read first 2 parts]
  14. The C++ Standard Library: A Tutorial and Reference. By Nicolai Josuttis. [For standard library]
  15. Boost [for STL]
  16. Wes Peterson 424
  17. 25-page introduction to C++
  18. C++ applications - by Bjarne Stroustrup.
  19. Dissecting MFC 2e (PDF). In Traditional Chinese, Hou Jie. 1997.05.
  20. Design Patterns in C++ with QT 4, Alan Ezust and Paul Ezust, 2008.
    Prolog
  21. Programming in Prolog. 4th Ed. 1997. W.F. Clocksin, C.S. Mellish. ISBN 3-540-58350-5
    Others
  22. * Programming pearls / Bentley, Jon Louis. 2000. [QA76.6.B454 2000]
  23. * More programming pearls : confessions of a coder / Bentley, Jon Louis. 1988. [QA76.6 .B452] 1988
  24. Beginning ATL COM programming / Richard Grimes, Alex Stockton ;... [QA 76.64 .G75 1998]
  25. Software carpentry: http://osl.iu.edu/~lums/swc/
  26. Object-oriented programming in C. Axel-Tobias Schreiner. http://www.cs.rit.edu/~ats/books/
  27. Mastering Regular Expressions. Jeffrey E. F. Friedl. 1st Ed. 1997. ISBN 10: 1-56592-257-3
  28. Online book: Dive into Python. http://www.diveintopython.org/
    Windows programming
  29. * Programming Windows, 5th Edition. Charles Petzold. ISBN: 1-57231-995-X; Microsoft Press; November 11, 1998; 1479 pages.
  30. * Programming Applications for Microsoft Windows. Jeffrey Richter. ISBN-10: 1572319968. 1056 pages. September, 1999.
  31. .NET Book Zero - What the C or C++ Programmer Needs to Know about C# and the .NET Framework. Charles Petzold. (2007)
    (A free on-line 267-page book in PDF and XPS formats). http://www.charlespetzold.com/dotnet/index.html
  32. All books by "Godfather of windows programming" Charles Petzold: http://www.charlespetzold.com/books.html
    Wiki of Charles Petzold: http://en.wikipedia.org/wiki/Charles_Petzold
  33. Windows system programming / Johnson M. Hart. [QA76.76.A65 H373 2005] ISBN: 0321256190
    Unix/Linux programming
  34. The Art of Unix Programming: http://www.faqs.org/docs/artu/index.html
    Online book by Eric Steven Raymond.
  35. W. Richard Stevens. Advanced Programming in the Unix Environment. 1992. ISBN 0-201-56317-7.
    A comprehensive guide to the Unix API.
  36. Unix Network Programming. Volume 2:Interprocess Communications, W.Richard Stevens
  37. Brian Kernighan and Rob Pike. The Practice of Programming. 1999. ISBN 0-201-61586-X.
    Online documents and websites
  38. http://msdn.microsoft.com/library/
  39. http://www.csdn.net/ (In Chinese)

Programming language

  1. Concepts of Programming Languages. 4th Ed. Robert W. Sebesta. [QA76.7.S43 1999] ISBN 0-201-38596-1

Security

  1. ** Applied Cryptography. Second Edition. Bruce Schneier. John Wiley & Sons, 1996.

Software engineering


X.C. Created on: 12/8/2007, Last updated: 3/23/2008