| |
Purpose: These are not strong endorsements. I am saying
that I find these books useful to me.
To the question, "What book should I buy?" Dr. Harris is known for responding, "Go
to a good (physical) bookstore. Plan to spend an hour or more browsing. If
you find a book that doesn't make you puke, buy it." Different books speak
to different people with different needs. If you find a book you wish you had
read yesterday because it answers the questions with which you are struggling,
it is a good choice. If you find a book that you could have written better
or one that is over your head, simply put it back on the shelf.
Contents
- Human-Computer Interface
- Graphics
- C/C++
- Java
- Internet applications architectures
- Methods and Project Management
- Quality Assurance and Testing
- Operating Systems
- Architecture
- Common Gateway Interface
- Technical Writing
- Web Search Engines
Software Tools
JoAnn Hackos and Janice Redish, User and Task Analysis for Interface Design, Wiley,
1998, www2.ari.net/redish/h&r.htm.
Donald A. Norman, The Design of Everyday Things, New York: Basic Books, 2002.
Donald A. Norman, Emotional Design: Why We Love (or Hate)
Everyday Things, New York: Basic Books, 2004.
Jakob Nielsen, Usability Engineering, New York: Morgan Kaufmann, 1993.
Jeffrey Rubin, Handbook of Usability Testing: How to Plan,
Design, and
Conduct Effective Tests, New York: Wiley, 1994.
Alan Dix, Janet Finlay, Gregory Abowd, and Russell Beale,
Human-Computer Interaction, Second Edition, New York: Prentice Hall.
Frank P. Ginac,
Customer Oriented Software Quality Assurance,
Prentice-Hall, Upper Saddle River, NJ, 1998.
Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne,
Operating Systems Concepts, 7th Edition, John Wiley & Sons, ISBN #0-471-69466-5.
URL: www.os-book.com
William Stallings, Operating Systems: Internals & Design
Principles, 5th Edition, Prentice Hall, ISBN #0-13-147954-7.
URL: williamstallings.com/OS/OS5e.html
Gary Nutt, Operating Systems: A Modern Perspective, Second edition,
Addison-Wesley, 2000.
Andrew S. Tanenbaum, Modern Operating Systems, Second edition, Prentice
Hall, 2001.
H. M. Deitel, Operating Systems, Second edition, Addison-Wesley, 1990.
Andrew S. Tanenbaum and Albert S. Woodhull, Operating Systems Design and
Implementation, Prentice Hall, Upper Saddle River, NJ, 1997.
[Hill] F. S. Hill, Jr., Computer Graphics: Using OpenGL, second
edition, Prentice Hall, 2001, www.prenhall.com/hill/html/cg.html
[Angel2003] Edward Angel,
Interactive Computer Graphics: A Top-Down Approach Using OpenGL, Third Edition,
Addison Wesley, 2003, www.cs.unm.edu/~angel/BOOK/THIRD_EDITION
[Angel2002] Edward Angel,
OpenGL: A Primer, Addison Wesley, 2002, www.cs.unm.edu/~angel/BOOK/PRIMER.
HIGHLY recommended as a quick "How do I do zzz in OpenGL."
[Wright_Sweet] Richard Wright and Michael Sweet, OpenGL
SuperBible, Second edition, Waite Group Press, 2000, www.starstonesoftware.com/OpenGL
[Watt] Alan Watt, 3D Computer Graphics, Third edition,
Addison-Wesley, 2000.
Brian W. Kernighan and Dennis M. Richie, The C Programming Language,
Prentice-Hall, 1978. The classic. I still use it.
Lee Atkinson and Mark Atkinson, Using C, Que, 1990. Many good, solid examples.
Everything is here.
Bruce Eckel, C++ Inside & Out, Osborne, 1993. Comprehensive and
authoritative.
Bruce Eckel, Thinking in C++, available electronically (free) at www.mindview.net/Books
(scroll down)
Bruce Eckel, Thinking in Java, available electronically (free) at www.mindview.net/Books
(scroll down)
Art Gittleman, Advanced Java: Internet Applications, Second Edition,
Scott/Jones, El Granada, Calif., 2002.
Art Gittleman, Computing with Java: Programs, Objects, Graphics, Alternate
Second Edition, Scott/Jones, El Granada, Calif., 2002.
Cay S. Horstmann and Gary Cornell, Core Java: Volume I - Fundamentals,
Prentice Hall, Upper Saddle River, NJ, 1997.
Cay S. Horstmann and Gary Cornell, Core Java: Volume II - Advanced Features,
Prentice Hall, Upper Saddle River, NJ, 1998.
Henri Jubin and the Jalapeņo Team, JavaBeans by Example, Prentice Hall,
Upper Saddle River, NJ, 1998.
Art Gittleman, Advanced Java: Internet Applications, Second Edition,
Scott/Jones, El Granada, Calif., 2002.
From Marty Hall, Core Servlets and Java Server Pages, Prentice Hall
and Sun Microsystems Press, 2000. See www.coreservlets.com
Ian S. Grahm, HTML Sourcebook, Third edition, Wiley, 1997. This is the
HTML reference I use.
Eric Larson and Brian Stephens, Administrating Web Servers, Security, &
Maintenance, Prentice Hall, Upper Saddle River, NJ, 2000. I prefer "Administering,"
but the title stands.
Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering:
Conquering Complex and Changing Systems, Prentice Hall, 2000.
COEN 181 textbook, good for object-oriented development methodologies.
Grady Booch, Ivar Jacobson, James Rumbaugh, The Unified Modeling Language
User Guide, Addison Wesley, 1999.
Spencer Johnson, Who Moved My Cheese?, Putnam, 1998. Edward Yourdon,
Structured Walkthroughs, Yourdon Press, Englewood Cliffs, N.J., 1989.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides (GOF - "Gang
of Four"), Design Patterns: Elements of Reusable Object-Oriented Software,
Addison Wesley, Reading, Mass., 1995. Encapsulate the concept that varies. Probably
the most influential (on me) technology book I've read in a decade.
Richard Fairley, Software Engineering Concepts, McGraw-Hill,
New York, 1985.
John Musa, Software Reliability Engineering, McGraw-Hill,
New York, 1989. Assumes an organization at least at CMM level 3.
Thomas C. Royer, Software Testing Management -- Life on
the Critical Path, Prentice Hall, Englewood Cliffs, NJ, 1993.
Edward Yourdon, Structured Walkthroughs, Yourdon
Press, Englewood Cliffs, NJ, 1989.
Biggs, Charles S.; Birks, Evan G.; and Atkins, William, Managing
the Systems Development Process, Touche Ross - Prentice Hall, Englewood
Cliffs, NJ, 1980.
Boar, Bernard H., Application Prototyping: A Requirements
Definition Strategy for the 80's, Wiley, New York, 1984.
Boehm, B. W., Software Engineering Economics, Prentice-Hall,
Englewood Cliffs, NJ, 1982.
Brooks, F. P., The Mythical Man-Month: Essays on Software
Engineering, Addison-Wesley, Reading, MA, 1975.
Connell, John L., and Shafer, Linda, Structured Rapid
Prototyping: An Evolutionary Approach to Software Development, Prentice-Hall,
Englewood Cliffs, NJ, 1989.
Davis, William S., Systems Analysis and Design: A Structured
Approach, Addison-Wesley, Reading, MA, 1983.
DeMarco, Tom, Controlling Software Projects, Yourdon
Press, New York, 1982.
DeMarco, Tom, Structured Analysis and System Specification, Yourdon
Press, New York, 1978.
Robert Dunn, Software Defect Removal, McGraw-Hill,
New York, 1984.
Gane, Chris; Sarson, Trish, Structured Systems Analysis:
Tools and Techniques, Prentice-Hall, Englewood Cliffs, NJ, 1979.
Hansen, Kirk, Data Structured Program Design, 2d
ed., Ken Orr and Associates, Topeka, KS, 1986.
Lantz, Kenneth S., The Prototyping Methodology, Prentice-Hall,
Englewood Cliffs, NJ, 1986.
March, Sal, ed., Entity-Relationship Approach, North-Holland,
New York, 1988.
Martin, James; McClure, Carma, Structured Techniques
for Computing, Prentice-Hall, Englewood Cliffs, NJ, 1985.
Martin, James; McClure, Carma, Diagramming Techniques
for Analysts and Programmers, Prentice-Hall, Englewood Cliffs, NJ, 1985.
Martin, James, Application Development without Programmers, Prentice-Hall,
Englewood Cliffs, NJ, 1982.
Mills, Harlan D., Software Productivity, Little,
Brown and Co., Boston, 1983.
Orr, Kenneth, Structured Systems Development, Yourdon
Press, New York, 1977.
Orr, Kenneth, Structured Requirements Definition, Ken
Orr and Associates, Topeka, KS, 1980.
Page-Jones, Meilir, The Practical Guide to Structured
Systems Design, 2nd ed., Yourdon Press/Prentice-Hall, Englewood Cliffs,
NJ, 1988.
Ian Sommerville, Software Engineering, Addison
Wesley, 1996.
Weinberg, Gerald, The Psychology of Computer Programming, Van
Nostrand Reinhold, New York, 1971. One of my all-time favorites.
Weinberg, Gerald, Understanding the Professional
Programmer, Little, Brown, and Co., Boston, 1982.
Whitten, Jeffrey L.; Bentley, Lonnie D.; Ho, Thomas
I. M., Systems Analysis and Design Methods, Times Mirror / Mosbey College
Publishing, St. Louis, 1986.
Yourdon, Edward, Modern Structured Analysis, Yourdon
Press/Prentice-Hall, Englewood Cliffs, NJ, 1989.
Yourdon, Edward, Essential Systems Analysis, Yourdon
Press/Prentice-Hall, Englewood Cliffs, NJ, 1984.
Yourdon, Edward, Structured Walkthroughs, Yourdon
Press, New York, 1978.
Yourdon, Edward, Techniques of Program Structure
and Design, Prentice-Hall, Englewood Cliffs, NJ, 1975.
Yourdon, Edward; Constantine, Larry L., Structured
Design: Fundamentals of a Discipline of Computer Program and Systems Design, Prentice-Hall,
Englewood Cliffs, NJ, 1979.
Zelkowitz, Marvin V.; Shaw, Alan C,; Gannon, John
D., Principles of Software Engineering and Design, Prentice-Hall, Englewood
Cliffs, NJ, 1979.
Cem Kaner, Jack Falk, and Hung Quoc Nguyen, Testing
Computer Software, Second edition, Wiley, New York, 1999. Textbook for
the class. This book is unchanged since a 1992 printing, so some sentences
are laughably obsolete. Several authorities tell me it is still by far the
most helpful book available.
Edward Kit, Software Testing in the Real World: Improving
the Process, Addison Wesley, 1995.
Glenford J. Myers, The Art of Software Testing, Wiley,
New York, 1979. One of my all-time favorites. Classic. The one book to read
to understand testing.
Elfriede Dustin, Jeff Rashka, and John Paul, Automated
Software Testing: Introduction, Management, and Performance, Addison
Wesley, Reading, Mass., 1999.
Frank P. Ginac, Customer Oriented Software Quality
Assurance, Prentice-Hall, Upper Saddle River, NJ, 1998.
Alka Jarvis and Vern Crandall, Inroads to Software
Quality: "How To" Guide and Toolkit, Prentice-Hall, Upper Saddle River,
NJ, 1997.
Stephen H. Kan, Metrics and Models in Software Quality
Engineering Addison Wesley, Reading, Mass., 1995.
Michael R. Lyu, Ed., Handbook of Software Reliability
Engineering McGraw-Hill, New York, 1996.
William E. Perry, How to Test Software Packages, Wiley,
New York, 1986.
Stephen R. Schach, Classical and Object-Oriented Software
Engineering with UML and Java, Fourth edition, McGraw-Hill, Boston, 1999.
Robert L. Baber, Error-Free Software: Know-how and
Know-why of Program Correctness, Wiley, New York, 1991. Program proving.
Richard Fairley, Software Engineering Concepts, McGraw-Hill,
New York, 1985.
John Musa, Software Reliability Engineering, McGraw-Hill,
New York, 1989. Assumes an organization at least at CMM level 3.
Jerry Peek, Tim O'Reilly, and Mike Loukides, Unix Power
Tools, O'Reilly, Sebastopol, CA. Especially SCCS, p. 366.
Thomas C. Royer, Software Testing Management -- Life on
the Critical Path, Prentice Hall, Englewood Cliffs, NJ, 1993.
Edward Yourdon, Structured Walkthroughs, Yourdon
Press, Englewood Cliffs, NJ, 1989.
John L. Hennessy and David A. Patterson, Computer Architecture: A Quantitative
Approach, third edition, Morgan Kaufmann, New York, 2003. See www.mkp.com/CA3.
David A. Patterson and John L. Hennessy, Computer Organization and Design:
The Hardware Interface. Text for COEN 171.
Gerrit A. Blaauw and Frederick P. Brooks, Jr.,
Computer Architecture: Concepts and Evolution,
Addison Wesley, 1997.
William Stallings,
Computer Organization and Architecture,
Prentice Hall, 2000.
Miles J. Murdocca and Vincent P. Heuring,
Principles of Computer Architecture,
Prentice Hall, 2000.
John D. Carpinelli,
Computer Systems Organization and Architecture,
Addison Wesley, 2001.
John Paul Shen and Mikko H. Lipasti,
Modern Processor Design: Fundamentals for Superscalar Processors,
McGraw-Hill, 2003.
Highly recommended as a complement to Hennessey and Patterson.
Shishir Gundavaram, CGI Programming on the World Wide Web, O'Reilly,
Sebastopol, CA, 1996.
William E. Weinman, The CGI Book: The Complete World Wide Web Programming
Reference, New Riders, Indianapolis, IN, 1996. In my view, the claim
of the title was an exaggeration when the book was published, but I do find
some useful information.
Gary Blake and Robert W. Bly, The Elements of Technical Writing, Longman,
1993. The best buy for your money. Very helpful pocket guide.
William Pfeiffer, Technical Writing: A Practical Approach, Fourth Edition, Prentice
Hall, 2000. Comprehensive. Excellent.
Maurice Scharton and Janice Neuleib, Things your Grammar Never Told You,
Second Edition, Longman, 2001. Very helpful pocket guide.
Lyn Dupre, Bugs in Writing: A Guide to Debugging Your Prose, Addison
Wesley, 1995.
Gerld J. Alred, Charles T. Brusaw, and Wlater E. Oliu, Handbook of Technical
Writing, Seventh Edition, St. Martin's Press, 2003.
Nicholas J. Higham, Handbook of Writing for the Mathematical Sciences, SIAM,
1993.
Norm Goldstein, editor, The Associated Press Stylebook and Libel Manual,
Sixth Trade Edition Addison Wesley, 1996.
Paul V. Anderson, Technical Writing: A Reader-Centered Approach, Third
Edition, Harcourt Brace, 1995..
William Pfeiffer, Technical Writing: A Practical Approach, Fourth Edition, Prentice
Hall, 2000. Comprehensive. Excellent.
I commend to your attention references in our text. Reference numbers here match those.
Books whose reference numbers are bold.
[Berry] Michael W. Berry and Murray Browne,
Understanding Search Engines: Mathematical Modeling and Text Retrieval,
SIAM, 1999.
[23] W. B. Frakes and R. Baeza-Yates,
Information Retrieval: Data Structures & Algorithms,
Prentice Hall, Englewood Cliffs, NJ.
Assignment 2 abstract and
summary, Ch. 7 by Gang Peng
Assignment 2 abstract and
summary, Ch. 7 by Laurence Pesdan
Assignment 3 abstract and
summary, Ch. 9 by Sanjay Vallecha
Assignment 3 abstract and
summary, Ch. 13 by Gang Peng
[26] Gene H. Golub and Charles F. Van Loan ,
Matrix Computations, third ed.,
Johns Hopkins University Press, Baltimore, 1996.
[32] Robert R. Korfhage ,
Information Storage and Retrieval,
John Wiley & Sons, New York, 1997.
Assignment 2 abstract
and summary, Ch. 3 by Will Meier
Assignment 2 abstract
and summary, Ch. 3 by Sanjay Vallecha
[33] G. Kowalski,
Information Retrieval Systems,
Kluwer Academic Publishers, Boston, MA, 1997.
Assignment 2 abstract and
summary by Hongmei Zhang
[40] G. Marchionini,
Information Seeking in Electronic Environments,
Cambridge University Press, New York, 1995.
Assignment 2 abstract
and summary, Ch, 5 by Brad Olson
Assignment 2 abstract
and summary, Ch. 1-3 by Su Qian
Assignment 2 abstract
and summary, Ch. 8 by Kevin Schmidt
Assignment 3 abstract and
summary, Ch. 4 by Su Qian
[51] G. Salton and M. McGill,
Introduction to Modern Information Retrieval,
McGraw-Hill, New York, 1983.
[54] Ben Schneiderman,
Designing the User Interface: Strategies of Effective Human-Computer Interaction, third ed.,
Addison-Wesley, Reading, MA, 1998.
Assignment 2 abstract
and summary, Ch. 15 by Rachana Dalmia
Assignment 2 abstract
and summaryh. 1-2 by Woody Leung
Assignment 2 abstract
and summary, Ch. 10 by Chris Peterson
Assignment 2 abstract
and summary, Ch. 13 by Avinash Vyas
Assignment 2 abstract
and summary, Ch. 8 by Sarah Schmit
Assignment 3 abstract and
summary, Ch. 14 by Avinash Vyas
Assignment 3 abstract and
summary, Ch. 4 by Hongmei Zhang
R.W. Belew, Finding Out About: A Congnitive Perspective
on Search Engine Technology and the WWW, Cambridge University Press,
2001. Suggested by Brad Olson.
Prezi
THE COOLEST presentation software!
Doodle Easy Scheduling
Solution to the "When can the team meet?" question.
Free Subversion hosting
Suggested by Jason Stich:
They offer free SVN hosting. Make an account an join the project. Then use TortoiseSVN to access the repository (call or e-mail if you have questions). If we want to splurge the $2/mo, we can get Amazon S3 backups.
Once you've made an account on XP-Dev.com, you'll need to follow these steps to set up the SVN.
Once you download and install TortoiseSVN, and restart, the following are the steps for configuring the SVN:
- Create a new folder on your computer. This should be on a local drive in a location where you will be comfortable "storing" the code for this project (mine's in "MU Spring 10\Senior Design\Project" and is called "DevRoot")
- Right click on the newly-created folder and click "SVN Checkout..."
- In the "URL of Repository", paste: http://svn.xp-dev.com/svn/e68limodispatch/
- The Checkout directory should be already-filled with the path to your newly-created folder
- Leave all options default and click OK.
- The SVN will download all existing folders from within our SVN project root
- Double-click on the folder you created in Step 1. You should see all the "content" that the SVN downloaded from the server.
- Copy and paste your project folder (preferably enough of the project folder to contain all the extra IDE data files) into the folder (be sure not to overwrite any downloaded content).
- Right-click on the folder(s) and click "TortoiseSVN > Add..."
- Check that all items in the list are selected and click OK.
- TortoiseSVN should upload all of your content to the server.
- Once again, right-click on the folder(s) you just added and click "SVN Commit..."
- Type a message to describe the new version (i.e. "dev root" or "dev0")
- Click OK
Anytime you want to work on your project, open it in this directory (locally). Any saved changes will be made locally on your drive until you perform the "Commit" command. If you or another user previously made changes to the project, be sure to right-click on the folder and click "SVN Update" (default, this will update you to the most recent version).
This works for any file type (I think).
One last thing: TortoiseSVN is installed on all of the engineering building computers. So if you keep the steps in this e-mail, you can set up on a school computer if necessary.
| |