Advice on Academic Best Practices
Dr. George Corliss, MU EECE
Marquette University logo      
Marquette resources Succeed Corliss entry page  
> Best practices > Reading

Recommended Reading

 

 

 

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

Human-Computer Interface

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.

Operating Systems

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.

Graphics

[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.

C/C++

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)

Java

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.

Internet applications architectures

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.

Methods and Project Management

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.

Quality Assurance and Testing

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.

Architecture

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.

Common Gateway Interface

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.

Technical Writing

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.

Web Search Engines

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.

Software Tools

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.

 

 

 
  Marquette University. Be The Difference. Marquette | Corliss | Best practices