Some Interesting Books

Most of the following books are not especially difficult. Most are available at


General Reading

The Mythical Man-Month; Brooks, Addison-Wesley, 1995

ACM Turing Award Lectures; Addison-Wesley, 1987

Computer Related Risks; Neumann, Addison-Wesley, 1995

Computers, Ethics, and Social Values; Johnson and Nissenbaum, Prentice Hall, 1995

Great Papers in Computer Science, LaPlante, IEEE, 1996


Object-Oriented Analysis and Design

The CRC Card Book; Bellin and Simone, Addison-Wesley, 1997

Designing Object-Oriented Software; Wirfs-Brock, Wilkerson, and Wiener, Prentice-Hall, 1990

UML Distilled; Fowler and Scott, Addison-Wesley, 1997

Java and Object Orientation: an Introduction, Hunt, Springer-Verlag, 1998

Extreme Programming Explained, Beck, Addison-Wesley, 1999



Design Patterns Explained, Shalloway and Trott, Addison-Wesley, 2002

Patterns in Java; Grand, Wiley, 1998

Design Patterns; Gamma, Helm, Johnson, and Vlissides, Addison-Wesley, 1995

Pattern-oriented Software Architecture; Buschmann, Meunier, Rohnert, Sommerlad,and Stal, Wiley, 1996

The Patterns Handbook, Rising, Cambridge, 1998

Analysis Patterns, Fowler, Addison Wesley, 1997

Pattern Languages of Program Design, Coplien and Schmidt (editors), Addison Wesley 1995

Pattern Languages of Program Design 2, Vlissides, Coplien and Kerth (editors), Addison Wesley 1996

Pattern Languages of Program Design 3, Martin, Riehle, and Buschmann(editors), Addison Wesley 1998

Pattern Languages of Program Design 4, Harrison, Foote, and Rohenert(editors), Addison Wesley 2000


General Programming

The Java Programming Language, Arnold and Gosling, Addison-Wesley, 1998

The Java Tutorial, Campione and Walrath, Addison-Wesley, 1998

Refactoring, Martin Fowler, Addison-Wesley, 2000

Essential Java Style: Patterns for Implementation, Langr, Prentice Hall, 2000

Effective C++; Myers, Addison-Wesley, 1998

Mastering Object-Oriented Design in C++; Horstman, Wiley, 1995

Thinking Recursively; Roberts, Wiley, 1986

Software Tools in Pascal; Kernighan and Plauger, Addison-Wesley, 1981

The Science of Programming; Gries, Springer Verlag, 1981

A Logical Approach to Discrete Math; Gries and Schneider, Springer Verlag, 1993

Programming Pearls; Bentley, Addison-Wesley, 1986

More Programming Pearls; Bentley, Addison-Wesley, 1988

The C Programming Language; Kernighan and Ritchie, Prentice Hall, 1988

Structure and Interpretation of Computer Programs; Abelson, Sussman, and Sussman, 1996

Java Structures, Bailey, McGraw-Hill, 1999



A Theory of Objects; Abadi and Cardelli, Springer-Verlag, 1996

The Lambda Calculus : Its Syntax and Semantics; Barendregt, 1984


Compilers and Languages

Compilers: Principles, Techniques, and Tools; Aho, Sethi, and Ullman, Addison-Wesley, 1985

On Pascal Compilers: Hansen, Prentice-Hall, 1985

A First Course in Formal Language Theory; Rayward-Smith, Blackwell, 1983

First Course in Computability; Rayward-Smith, Blackwell, 1987

Structured Computer Organization; Tanenbaum and Goodman, Prentice Hall, 1998

Programming Language Processors in Java, Watt and Brown, Prentice-Hall, 2000


Human Factors in Computing

Designing the User Interface (3ed), Schneiderman, Addison Wesley, 1998


April 17, 2002