John Cole's Suggested Reading

Updated 4/7/2010

As you know, your instructor reads a great deal.  A few of you have asked for a reading list, so here it is.  These are in no particular order. The CS-related books are things that I have found interesting that relate to our field. The non-fiction books relate to the wider world, and although not specific to our field, relate to the way the world works in general. The fiction I have chosen is there because these books have a deeper message.

Computer Science Related

Programming the Universe by Seth Lloyd. This is an excellent introduction to quantum computing.  He makes a good case for the universe being such a computer.

The Mythical Man-Month by Fred Brooks.  This is the classic in software project management, and should be required reading.  Brooks managed the OS/360 project at IBM and learned a great deal about how not to run a programming project. 

UML Distilled by Martin Fowler.  This is a great introduction to the Unified Modeling Language, enough to get you started until you take a full-blown OOAD course.

The Inmates Are Running the Asylum by Alan Cooper.  This is a fairly strong argument for software engineers not designing software products.  However, since we need to be involved in the process, he offers guidelines for doing this.  Cooper's other book is About Face: The Essentials of User Interface Design.  Cooper was the designer behind the "Visual" part of Visual Basic, and explains, using psychology and reason, why some interface designs are better than others and how to create good ones.

The Soul of a New Machine by Tracy Kidder.  This book is about the Eagle Project at Data General, to build a machine compatible with their Eclipse line.  It details many of the mistakes and problems in both the technology and the management of this project.

Fab by Neil Gershenfeld.  The subtitle is "How to Make (Almost) Anything."  The author runs the Fab Lab at MIT and teaches courses in exactly what the subtitle says, from design through actually making the object.  He teaches students how to use such things as laser cutters and sintering machines.  Wouldn't it be fun if we had one of these at UTD?

Inside SQL Server 2005: The Storage Engine by Kalen Delaney.  This gives you the intimate details of how SQL server databases are laid out, how the varioius kinds of blocks relate to each other, how indexes are structured, and so much more.  Required reading if you're going to write add-ons for this product.

Godel, Escher, Bach: An Eternal Golden Braid by Douglas Hofstadter.  Many programmers are also accomplished musicians.  Hofstadter explores the relationship between music, the strange paintings by Escher, and computation.  He writes well and explains things clearly.  There is also a running thread of conversations between the two characters of Zeno's paradox: Achilles and the Tortoise.

The Elements of Programming Style by Brian Kernighan and P. J. Plauger.  Good programs are not only technically correct, they are elegant, as well.  That is, they have a consistent internal structure, use good naming conventions, and are well-commented.  My copy is, to say the least, a little dated, with examples in FORTRAN and PL/1, but the ideas apply to Java and C#  as well.

Other Non-Fiction

The Closing of the American Mind by Harold Bloom. The author was a professor of English at the University of Chicago, and the book details how American education fell into decline and gives some prescriptions as to what to do about it.  When he started teaching in the 1950s, incoming freshman had familiarity with at least two basic documents: The Bible and The Declaration of Independence.  By the end of the 1960s, this was no longer true. 

Beyond Reason by Roger Fisher and Daniel Shapiro.  While this isn't a computer science book, it is directly relevant to both project planning and software engineering, in that both involve negotiation.  The authors define five basic elements of negotiation: Appreciation, Affiliation, Autonomy, Status, and Role, and explain how the can be used when working with others.

The Physics of Consciousness by Evan Harris Walker.  This almost belongs in the above section because it deals, first, with the information processing capacity of the mind/brain.  However, he quickly verges into real physics and how quantum interactions work in the brain.  He intersperses the technical chapters with a deeply personal narrative that relates to the subject.  This is easily the best book on how consciousness works that I have ever read, although he is missing a couple of key pieces.

Guns, Germs, and Steel by Jared Diamond. "Why did the whites get all the cargo?" asks Kali, a tribesman in New Guinea. This book is a fascinating description of why the civilizations that sprang from the fertile crescent were so much more materially successful than those in other parts of the world. It has more to do with geography and the availability of certain kinds of plants and animals than anything else.

The Blank Slate by Steven Pinker.  If you're interested in learning and teaching, this will fascinate you.  The concept of the "tabula rasa," advanced by John Dewey, is that everything we are is created by our experience.  Pinker shows that this is simply not true. 

Freakonomics by Steven D. Levitt and Stephen J. Dubner.  The subtitle is, "A rogue economist explores the hidden side of everything."  My favorite quote from the book is, "Morality is the way we want the world to work.  Economics is the way it actually works."  That is, you can tell what people really value by where they put their money.  If a teacher is evaluated by how students do on a test, they will do well on the test at the expense of learning anything, for example.

Cornered by Barry C. Lynn.  He explains how the weakening of American antitrust laws starting in 1981 and accelerated during the Clinton administration have led to near-monopolies.  This would be bad enough, but they have also led to trading, rather than production, being the way to maximize profits.

Fiction

Island by Aldous Huxley. Huxley's last book, this is a story of a civilization on a remote island that is a balance of Scottish pragmatism and Hindu spirituality.  While everyone reads Brave New World in high school, this is far better and more insightful.

Childhood's End by Arthur C. Clarke.  In my opinion, Clarke is one of the best science fiction writers ever, and this strange tale of aliens visiting our planet is probably his best work.

The Shockwave Rider by John Brunner.  This was his last and best book.  The title comes from Alvin Toffler's Future Shock, about the accelerating rate of change in modern culture.  The eponymous Rider rides this shockwave rather than being destroyed by it.  Or as Alan Kay put it, "The best way to predict the future is to invent it."